我在一个有多个表单的页面上有一个由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。
答案 0 :(得分:3)
这是一个猜测。如果您从文件系统提供页面,Firefox(我认为Chrome)会将其视为来自不同的域。你会得到200响应,但没有数据。
尝试使用Safari,或者用jsonp
代替json
。{/ p>
修改强>
由于您从其他域获取数据,因此无法使用。我认为XMLHTTPRequest不允许这样做。
答案 1 :(得分:-1)
哦,小伙子。这个问题又来了。
AJAX :异步 JavaScript和XML *。异步。异步。异步的。
您的函数do_json_get()
在执行AJAX调用中的成功处理函数之前返回ret
。操作顺序不在此处,从上到下。换句话说,你就是不能这样做。
由于其异步性,AJAX在回调上运行,而不是返回值。你需要改变你的范例。 成功处理函数需要执行data.html
本身所需的任何操作,或将其传递给另一个函数。
* 是的,我知道这些天原始首字母缩略词的XML部分很大程度上是残留的