JSON响应为空,但URL正确回显

时间:2010-04-20 21:52:59

标签: php ajax jquery

我在一个有多个表单的页面上有一个由jQuery进行AJAX的表单。我正在执行以下函数,它是$.ajax函数的包装器:

function do_json_get(uri){
    var ret = '';
    var url = AJAX_URL + uri;

    $.ajax({
        type: 'GET',
        url: url,
        async: false,
        success: function(data) {
            ret = data.html;
        },
        dataType: 'json'
    });

    return ret;
}

当我直接进入AJAX服务器(在PHP中呈现表单)时,我得到原始JSON响应 - 所以我知道服务器正在输出到浏览器,而AJAX服务器正在做其他事情,比如设置适当的cookie,所以我知道连接是好的(我得到200响应代码)。然而,data对象将返回null。

2 个答案:

答案 0 :(得分:3)

这是一个猜测。如果您从文件系统提供页面,Firefox(我认为Chrome)会将其视为来自不同的域。你会得到200响应,但没有数据。

尝试使用Safari,或者用jsonp代替json。{/ p>

修改

由于您从其他域获取数据,因此无法使用。我认为XMLHTTPRequest不允许这样做。

答案 1 :(得分:-1)

哦,小伙子。这个问题又来了。

AJAX 异步 JavaScript和XML *。异步。异步。异步的。

您的函数do_json_get()在执行AJAX调用中的成功处理函数之前返回ret。操作顺序不在此处,从上到下。换句话说,你就是不能这样做。

由于其异步性,AJAX在回调上运行,而不是返回值。你需要改变你的范例。 成功处理函数需要执行data.html本身所需的任何操作,或将其传递给另一个函数。

* 是的,我知道这些天原始首字母缩略词的XML部分很大程度上是残留的