Javascript 通过jqueryajax设置和获取PHP变量
我正在尝试为我自己和一个朋友做一个基本的聊天系统。这很简单,但是ajax让我非常困惑。我使用ajax请求一个php页面,我在其中设置了一个用户名,上次我下载了一个聊天。然而,我不知道如何阅读php页面的回声。我在网上查过了,但是有太多的变化,这让我更加困惑。谁能给我一些指导吗 Scripts.js(已链接jQuery) 下载.php 这是我的php页面作为普通字符串(现在格式正确的JSON)的回声:Javascript 通过jqueryajax设置和获取PHP变量,javascript,php,jquery,ajax,chat,Javascript,Php,Jquery,Ajax,Chat,我正在尝试为我自己和一个朋友做一个基本的聊天系统。这很简单,但是ajax让我非常困惑。我使用ajax请求一个php页面,我在其中设置了一个用户名,上次我下载了一个聊天。然而,我不知道如何阅读php页面的回声。我在网上查过了,但是有太多的变化,这让我更加困惑。谁能给我一些指导吗 Scripts.js(已链接jQuery) 下载.php 这是我的php页面作为普通字符串(现在格式正确的JSON)的回声: 我有标题(“内容类型:application/json”)在我的页面顶部。我做错了什么?您的JS
我有
标题(“内容类型:application/json”)代码>在我的页面顶部。我做错了什么?您的JSON响应格式不正确。日期戳后面的逗号位于引号内,而不是引号外:
"time":"2014-05-09 17:32:00," username":"Josue"
},
此外,您应该使用方括号来表示消息数组。您的JSON应该如下所示:
{ "message": [
{
"chat":"Hello, world!",
"time":"2014-05-09 17:32:00",
"username":"Josue"
},
{
"chat":"This is my second message.",
"time":"2014-05-09 17:32:05",
"username":"Josue"
}
]
}
您可以使用该函数将PHP数组或对象转换为JSON字符串:
<?php
$my_arr = array("message" => array());
$my_arr["message"][] = array("chat" => "Hello, World!", "time" => "2014-05-09 17:32:05", "username" => "Josue");
echo json_encode($my_arr);
?>
我认为它失败了,因为消息不是数组。消息是一个对象,所以如果您有更多消息,请重新设计发送它们的方式。您的php脚本应该将消息放在json数组中,这样您就可以使用0-index来获取第一个消息了
第一,你的JSON格式不正确<代码>“时间”:“2014-05-09 17:32:00”,“用户名”:“Josue”
应该是“时间”:“2014-05-09 17:32:00”,“用户名”:“Josue”
。您可能会在浏览器的错误控制台中看到这一点
第二,你需要把你的消息放在一个数组中,否则你只是用每一条新消息覆盖你的message
属性,所以你的前端只会得到php文件中最低的消息
PHP应该回应这一点:
{
messages: [
{
"chat":"Hello, world!",
"time":"2014-05-09 17:32:00",
"username":"Josue"
},
{
"chat":"Second message",
"time":"2014-05-09 17:32:00",
"username":"Josue"
}
]
}
然后在JS中,数组将是
data.messages
,其中消息分别是data.messages[0]
和data.messages[1]
。重新格式化JSON后,您还可以尝试将JSON字符串解析为javascript对象
var parsed_data = $.parseJSON(data);
// extract data here parsed_data[key]
您确定错误来自打印位置吗?因为在ajax调用之后,您有
latestTimestamp=data.message[0].time;
但是数据变量不再在该范围内!什么是消息的一部分数据.messages
?该设置在哪里?抱歉,Oops将修复JSON输出以反映这一点。谢谢,这很有帮助。
{
messages: [
{
"chat":"Hello, world!",
"time":"2014-05-09 17:32:00",
"username":"Josue"
},
{
"chat":"Second message",
"time":"2014-05-09 17:32:00",
"username":"Josue"
}
]
}
var parsed_data = $.parseJSON(data);
// extract data here parsed_data[key]