2015-11-10 30 views
2

我目前正在嘗試爲我的網站創建我自己的即時通訊工具(不使用插件 - 我試圖手工將其用於學習目的),我期待嘗試發送一個ajax向服務器請求兩個用戶之間的所有消息的列表。 我的問題是:ajax可以讀取Laravel發送的Message對象的集合(懷疑它)還是需要以某種方式/方式進行格式化?我最初以爲使用列表來獲取sender_id以及消息(該命令是按默認日期排序的),但是,我不認爲JavaScript可以讀取PHP的(不)數組。到目前爲止我唯一可行的解​​決方案是發送一個帶有sender_id的數組,然後是整個對話或兩個數組的消息 - 一個是所有sender_id的順序,另一個是所有消息的順序。Ajax收到來自Laravel的對象集合

謝謝。

回答

2

您可以使用JSON在PHP和JavaScript之間進行通信(查找PHP json_encode和json_decode函數),它將允許您在複雜數組之間傳遞幾乎本地語言之間的複雜數組。

編輯:舉幾個例子來給予一定的指示通過AJAX它是如何工作的,我使用jQuery我的例子在這裏

請求從PHP腳本信息:

$.ajax({ 
    method: 'GET', 
    dataType: 'json', 
    success: function(data) { 
     for (i in data.messages) { 
      output(data.messages[i]); 
     } 
    } 
}); 
var output = function(message) { 
    console.log(message.id); 
    console.log(message.sender.id); 
}; 

PHP腳本可以輸出:

$messages = array(
    array(
     'id' => 1, 
     'message' => 'Awesome', 
     'sender' => array(
      'id' => 1, 'name' => 'John', 
     ), 
    ), 
); 
echo json_encode(array('messages' => $messages)); 

通過AJAX發送使用JSON信息:使用

// Example data object, you can have this infinitely nested 
var data = [ 
    {id: 1, "message": "test" } 
]; 
$.ajax({ 
    method: 'POST', 
    dataType: 'json', 
    data: JSON.stringify(data), 
    contentType: "application/json; charset=utf-8", 
}); 
var output = function(message) { 
    console.log(message.id); 
    console.log(message.sender.id); 
}; 

PHP腳本就可以這樣說的:

$data = json_decode(file_get_contents('php://input'), true); 
// This becomes a simple 2D PHP array which is an exact representation as your JS object. The above example data can be output as: 
foreach ($data as $message) { 
    echo $message['id'] . ' - ' .$message['message']; 
} 
+0

嗯,貌似將它發送到網頁工作。現在,我將如何獲取每個元素? –

+0

你是什麼意思抓住每一個元素?如從頁面發送到PHP?在JavaScript中使用JSON對其進行編碼並將其發送給PHP。或者我誤解了你的問題? –

+0

對不起,我的意思是在讀取json元素一旦發送到頁面。我從來沒有處理過json元素,所以我不知道它的結構,也不知道如何循環它(或者在Laravel中調用每個部分像$ message-> sender_id)。 –