使用jQuery和JSON处理AJAX responseText?

4

好的,当涉及到jQuery和json时,我有点新手。如果我使用json作为返回类型,我还能从XMLHttpRequest对象中检索responseText吗?

这是我正在使用的代码:

json response: {"clients": []}

$.ajax({
        type: "POST",
        url: "/myurl/whatever.php",
        data: myData,
        dataType: "json",

        success: function(msg){
            status.html(msg[0]);
        },
        error: function(msg) {
                status.html("Error: " + msg[0]);
        }

        });

如果我想输出JSON响应,使用msg[0]的方法正确吗?还是我漏掉了什么?

如何仍然使用上述代码与XMLHttpRequest获取状态、responseText等。

谢谢大家!

2个回答

6
据我所知,调用$.ajax返回一个XHR对象,可以从中提取responseText,例如:
var xhr = $.ajax( {
                        url:' someInfo.php',
                        data: 'which=squirrels',
                        asynch: true
                } );

var resp = xhr.responseText;

响应文本将包含一个json字符串,需要将其转换为对象以便使用。
如果您想在success函数中直接使用响应作为json对象,请按照@cloudhead的建议使用msg。您在选项中设置的dataType:"json"会自动进行转换。

1
如果您正在使用 JSON,则会返回一个 JSON 对象,而不是 XML 对象。 您可以直接输出它,而无需使用 [0]。

1
响应代码怎么样?200、500等,还是也会返回XML对象? - jake m
我不确定在回调函数中是否可以访问状态,如果是JSON对象的话。但是你可以做的是,在发送之前,让服务器端脚本将状态添加到JSON对象中,就像添加任何其他字段一样。然后你可以通过json.status来检查状态。 - cloudhead

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接