JSON响应具有指定行时的Javascript警报

JSON响应具有指定行时的Javascript警报,javascript,json,alert,Javascript,Json,Alert,我试图构建一个从服务器获取JSON的应用程序,然后在JSON响应指定行时显示javascript警报。我从服务器获取的JSON如下所示: { "key": [ { "IND": "406", "NUMBER": "9", "MESSAGE": "this is a test", "status": "ok" } ] } 这是我用来显示警报的代码: fu

我试图构建一个从服务器获取JSON的应用程序,然后在JSON响应指定行时显示javascript警报。我从服务器获取的JSON如下所示:

{
    "key": [
        {
            "IND": "406",
            "NUMBER": "9",
            "MESSAGE": "this is a test",
            "status": "ok"
        }
    ]
}
这是我用来显示警报的代码:

function UpdateRecord(update_id) {
    var id = getUrlVars()["id"];
    jQuery.ajax({
        type: "POST",
        url: serviceURL + "test.php",
        data: 'id=' + id,
        cache: false,
        success: function(data) {
            if (data.status == 'ok') {
                alert(data.message);
            } else {
                alert("no");
            }
        }
    });
}​
但是,即使JSON有一行“状态”,此代码也会提示“否”:“确定”

尝试使用
if(data.key[0].status)
,并将
警报(data.message)
替换为
警报(data.key[0].message)
。你必须小心资本化

尝试使用
if(data.key[0].status)
,并将
警报(data.message)
替换为
警报(data.key[0].message)
。你必须小心资本化

在成功处理程序中执行
console.log(data)
,查看数据是什么。您将看到没有
数据。状态
,而是
数据。键[0]。状态

在成功处理程序中执行
控制台。日志(数据)
,以查看数据是什么。您将看到没有
数据。状态
,而是
数据。键[0]。状态

您的jSON中定义了“键”,所以不是吗

if(data.key[0].status == "ok")
在jSON中定义了“key”,不是吗

if(data.key[0].status == "ok")

@用户:如果您查看引用的JSON,请将
data
视为指向整个内容。因此,Cyrille指出,您要查找的
status
属性位于
data.key[0]。status
。而且所有JavaScript属性名称都区分大小写,因此
message
message
@user不匹配:如果您查看引用的JSON,请将
数据
视为指向整个内容。因此,Cyrille指出,您要查找的
status
属性位于
data.key[0]。status
。而且所有JavaScript属性名称都区分大小写,因此
message
message
不匹配。上面的json就是返回的吗?log()是调试javascript的最佳方法,因为它将打印到浏览器控制台,您应该在不同点打印出来,以确保获得正确的响应/变量。使用JSON,假设变量名是第一个大括号的链接,然后您必须一步一步地通过每个级别来获得所需的内容。data={key…},data.key=[{status…}],data.key[0]={status…}等等,这与我从服务器得到的响应完全相同。我使用了
console.log(data)
并将其粘贴到JSON验证器中,它是一个有效的JSON。我刚刚将上面的JSON复制到google chrome控制台上的一个var中,并运行了data.key[0]。status;它返回“ok”。还有一些事情正在发生,上面的回答建议将数据类型JSON添加到请求中,试试看,否则可能是打字错误或类似的东西,因为它对我有用,如果你有chrome(它的控制台非常适合测试几行代码),我必须添加一个
头('Content-Type:application/JSON')。现在它工作得很好,谢谢你的帮助!上面的json是否正是返回的内容?log()是调试javascript的最佳方法,因为它将打印到浏览器控制台,您应该在不同点打印出来,以确保获得正确的响应/变量。使用JSON,假设变量名是第一个大括号的链接,然后您必须一步一步地通过每个级别来获得所需的内容。data={key…},data.key=[{status…}],data.key[0]={status…}等等,这与我从服务器得到的响应完全相同。我使用了
console.log(data)
并将其粘贴到JSON验证器中,它是一个有效的JSON。我刚刚将上面的JSON复制到google chrome控制台上的一个var中,并运行了data.key[0]。status;它返回“ok”。还有一些事情正在发生,上面的回答建议将数据类型JSON添加到请求中,试试看,否则可能是打字错误或类似的东西,因为它对我有用,如果你有chrome(它的控制台非常适合测试几行代码),我必须添加一个
头('Content-Type:application/JSON')。现在它工作得很好,谢谢你的帮助!