Jquery 为什么警报(json[0].subject);给出未定义的?
我有以下代码:Jquery 为什么警报(json[0].subject);给出未定义的?,jquery,json,Jquery,Json,我有以下代码: <script> $(document).ready(function() { refresh(); }); function refresh() { $.get('getMessageDetails.php', function (json) { alert(json); alert(json[0].subject);
<script>
$(document).ready(function()
{
refresh();
});
function refresh()
{
$.get('getMessageDetails.php', function (json) {
alert(json);
alert(json[0].subject);
},"json");
window.setTimeout(refresh,30000);
}
</script>
哪个是正确的
但是alert(json[0].subject)代码>给出未定义的
请帮忙?
谢谢如果您的第一个警报显示了您所说的内容,那么您的json
变量的内容不会被视为json-如果是,您会在警报中看到[object object]
。检查
所以您需要指定返回的是json(您这样做);但是您还应该确保PHP发送了正确的响应头。在发送输出之前,添加下面的第一行:
header('Content-type: application/json');
echo json_encode($last_unopened_message_row);
必须将json变量转换为正确的json格式变量
目前它是一个字符串变量
您必须按照以下方式使用它:
<script>
$(document).ready(function()
{
refresh();
});
function refresh()
{
$.get('getMessageDetails.php', function (json) {
alert(json); // this is a string variable.
json = $.parseJSON(json); //now json varible is in correct json format.
alert(json.subject); //you can call it dirctly like a associative array. No need to include '[0]'.
},"json");
window.setTimeout(refresh,30000);
}
</script>
$(文档).ready(函数()
{
刷新();
});
函数刷新()
{
$.get('getMessageDetails.php',函数(json){
警报(json);//这是一个字符串变量。
json=$.parseJSON(json);//现在json变量的json格式正确了。
alert(json.subject);//您可以像关联数组一样直接调用它。无需包含“[0]”。
}“json”);
设置超时(刷新,30000);
}
您的JSON解析似乎不正确。尝试改用getJSON
$.getJSON('getMessageDetails.php', function (json) {
alert(json);
alert(json[0].subject);
});
你为什么不使用$.getJSON():?我对这一切都很陌生,不知道怎么做。通读你给我的链接,但是很复杂……我不知道从哪里开始使用getJSON修改我的所有代码。我调用的文件是a.php,因为我需要从数据库表中获取值…仅供参考:这个网站是一个移动网站,但它确实可以工作:yikes,那么我不知道…为什么我没有定义呢?我很沮丧……如果你能使用$.get,那么升级到$.getJSON应该不会太难(实际上它会更容易,因为它会自动为你处理JSON!!!)。请参阅jQuery文档上的示例以及它们如何处理调用返回的数据。猫的例子在不久前帮助了我很多…我复制并粘贴了警报中的内容。。我注释掉标题行只是为了检查…我已经将其放回alert now gives[]???因此,我错了-即使是正确的标题也不能强制进行正确的类型转换。在这种情况下,遵循@Rocket的建议,或者至少按照Pavan Agarwal所说的去做。看起来,当您尝试发送正确的(json)头时,根本不会发送任何输出。这可能是关闭错误报告和某个地方发生致命错误的组合。因此,要么调查造成死亡白屏的原因,要么作为一种(糟糕的)解决方法,忘记发送正确的头,只发送文本-客户端输出。但是,使用json=$.parseJSON(json)解析json
正如@Pavan Agarwal建议的那样。alert不显示任何内容:)在firebug中,response选项卡只显示[]如果要使用parseJSON
,则不需要,get
末尾的“json”
。
<script>
$(document).ready(function()
{
refresh();
});
function refresh()
{
$.get('getMessageDetails.php', function (json) {
alert(json); // this is a string variable.
json = $.parseJSON(json); //now json varible is in correct json format.
alert(json.subject); //you can call it dirctly like a associative array. No need to include '[0]'.
},"json");
window.setTimeout(refresh,30000);
}
</script>
$.getJSON('getMessageDetails.php', function (json) {
alert(json);
alert(json[0].subject);
});