javascript - Ajax 从 Laravel 接收对象集合

标签 javascript php jquery ajax laravel

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

谢谢。

最佳答案

您可以使用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'];
}

关于javascript - Ajax 从 Laravel 接收对象集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33633373/

相关文章:

asp.net - 从代码隐藏调用警报

javascript - jquery dragtable 动态添加的列拖动选项不起作用

javascript - 我如何防止玩家发送垃圾邮件移动消息 (Node.js)?

javascript - jquery - 对象...没有方法 'css'

javascript - jquery 淡入淡出然后重定向

jquery - 如何设置 <select> 元素的样式?

javascript - 在客户端 requireJS 环境中使用 material-ui?

php - MySQL - 如何每 24 小时递减一次 int 值?

php - Codeigniter 缩略图图像路径无法存储在 MySql 中

php - 想知道.. mysql 和 mysqli 是否可以同时在同一个网站上使用?