Ajax从Laravel接收一组对象

时间:2015-11-10 15:20:03

标签: javascript php jquery ajax laravel

我目前正在尝试为我的网站创建自己的即时消息(不使用插件 - 我试图将其用于学习目的)并且我希望尝试向服务器发送ajax请求以获取列表两个用户之间的所有消息。 我的问题是:ajax'可以'读取'从Laravel发送的Message对象的集合(怀疑它)还是需要以某种方式/方式进行格式化?我最初想过使用列表来获取sender_id以及消息(默认情况下,订单是按日期),但是,我不认为javascript可以读取PHP的(不是) - 数组。到目前为止,我提出的唯一可行的解​​决方案是发送1个数组,其中包含sender_id,后跟整个会话的消息或2个数组 - 一个包含所有sender_id的顺序,第二个包含所有消息的顺序。

感谢。

1 个答案:

答案 0 :(得分:2)

您可以使用JSON在PHP和JavaScript之间进行通信(查找PHP json_encode和json_decode函数),它允许您在语言之间几乎本地传递复杂数组。

编辑:举几个例子来说明它是如何工作的,我在这里使用jQuery作为我的例子

通过AJAX从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'];
}