2017-04-15 106 views
0

我是jquery和ajax的新手。我在這裏有一個腳本,我需要將變量傳遞給一個php文件。該PHP將被編碼爲div#chat-body。我正嘗試通過POST將接收器變量傳遞給load-messages.php,但出現以下錯誤:「未定義索引:第8行xxxx/scripts/load_messages.php中的接收器」。我認爲我的語法有問題,或者我完全錯了。將變量從javascript通過ajax傳遞給php

的script.js

$('input#send-message').on('click', function(){ 
alert("test"); 
var message = $('input#input-message').val(); 
var sender= $('input#sender').val(); 
var receiver= $('input#receiver').val(); 

    if($.trim(message)!=''){ 
     $.post('scripts/messaging.php', {message: message, sender: sender, receiver:receiver}, function(data){ 
     //output after sending message 

     });  
     //load message to chat-body div 

     $.ajax({ 
     url: 'scripts/load_messages.php', 
     type: "POST", 
     data: {receiver: receiver}, 
     success: function(data){ 
      $('#chat-body').html(data); 
      //$('#chat-body').scrollTop($('#chat-body')[0].scrollHeight); 
     } 
    }); 
    }}); 

負載messages.php

<?php 
    session_start(); 
    require('config.php'); 
    require('chat_functions.php'); 


$messages = get_msg($_SESSION['user_id'], $_POST['receiver']); 

foreach($messages as $message){ 
    if($message['sender'] == $_SESSION['user_id']) { 
     ?><div id = "you_message"> 

     <?php echo '<strong> You: </strong><br />'; 
     echo $message['message'].'<br /><br />';?> 
     </div><!--you_message--> 
     <?php 
    } 

    else{ 
     ?><div id="recipient_message"> 
     <?php echo '<strong>'.get_name($_POST['receiver']).'</strong><br />'; 
     echo $message['message'].'<br /><br />';?> 
     </div> <!--recipient_message --> 
     <?php 
     } 
    } 

    ?> 
+0

顯然,該變量接收器沒有被傳遞給load-message.php –

+0

@BrianOna:請檢查我的答案,應該幫助你調試:) – OldPadawan

+0

我認爲你的代碼沒有問題,試着在螢火蟲中調試什麼鍵值被髮布 – Javed

回答

0

這只是簡單的通過AJAX調用值傳遞給PHP文件。 更改您的AJAX調用如下圖所示

var message = $('#input-message').val(); 
var sender= $('#sender').val(); 
var receiver= $('#receiver').val(); 
$.ajax({ 
    url: "scripts/load_messages.php", 
    method: "post", 
    //data: { "message":$('#input-message').val(),"sender":$('#sender').val(),"receiver":$('#receiver').val()},you can pass the values directly like this or else you can store it in variables and can pass 
    data: { "message":message,"sender":sender,"receiver":receiver}, 
    success: function(data){ 
    $('#chat-body').html(data); 
    }, 
    error: function() { 
    alert('Not OKay'); 
    } 
    }); 

和您的負載messages.php也能像this`

$receiver = $_POST['receiver']; 
echo $receiver; 
+0

這工作!只需在接收器上添加報價。謝謝。 –

0

你傳遞一個對象,而不是一個JSON字符串:

$.ajax({ 
    type: 'POST', 
    url: 'scripts/messaging.php', 
    data: JSON.stringify ({receiver: receiver}), 
    success: function(data) { alert('data: ' + data); }, 
    contentType: "application/json", 
    dataType: 'json' 
}); 
0

你可以試試這個,然後適應你的需求,因爲我只是讓它更「基本」一點:

表單:

<form action="#" id="form" method="post"> 
<input type="text" id="sender" name="sender" /> 
<input type="text" id="receiver" name="receiver" /> 
<input type="text" id="input-message" name="input-message" /> 
<input type="submit" id="send-message" value="Post" /> 
</form> 

<div id="chat-body" class="regular"></div> 

jQuery的部分:

$(document).ready(function(){ 

$("#send-message").click(function(e){ 
e.preventDefault(); /* to prevent form default action */ 

var message = $('#input-message').val(); 
var sender = $('#sender').val(); 
var receiver = $('#receiver').val(); 

    $.ajax({ 
    url: "load_messages.php", 
    method: "POST", 
    data: { message: message, sender: sender, receiver:receiver }, 
    success: function(html){ 
     alert(html); /* checking response */ 
     $('#chat-body').html(html); /* add to div chat */ 
    } 
    }); 
}); 
}); 

然後,load_message.php

<?php 

error_reporting(E_ALL); ini_set('display_errors', 1); 

$sender = $_POST['sender']; 
$receiver = $_POST['receiver']; 
$message = $_POST['message']; 

echo"[ $sender/$receiver/$message ]"; /* here, you can only echo $message for instance, 
then use response to append message to chat window */ 

?>