jQuery $ .ajax调用适用于Chrome,但不适用于任何其他浏览器
问题描述:
以下调用在Chrome中完美适用,但在其他任何浏览器中均失败。
function getInfo(r,c,f){
return $.parseJSON($.ajax({
url: baseURL + 'somethingAPI/getInfo',
data: {
"data_r": r,
"data_c": c,
"data_f": f
},
//success: function(data){},
dataType: "json",
async: FALSE
}).response);
}
是的,我使用的是同步的Ajax调用,我相信,因为我不希望任何其他JS来没有这个执行和返回数据运行是必要的。虽然,我不完全确定成功回调是否应该发生其他事情。
无论如何,在Chrome中,我得到响应对象(JSON)并且可以很好地访问数据。
有谁知道我在做什么错?
答
关于你不知道如何避免async: false
的观点,这就像你想要完成的事情吗?
function getInfo(r, c, f, callback) {
$.ajax({
url: baseURL + 'somethingAPI/getInfo',
data: {
"data_r": r,
"data_c": c,
"data_f": f
},
dataType: "json",
success: callback,
});
}
getInfo('foo', 'bar', 'baz', function(response) {
console.log(response);
});
+0
谢谢!这正是我试图找出如何去做的。 – Erik 2011-06-17 04:23:09
答
不是parsingJson关于ajax查询,这里是我用来克服这些挑战
$.ajax({
url: "pagegoeshere.php",
timeout: 30000,
type: "POST",
data: 'data1='+data1+'&data2='+data2,
dataType: 'json',
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert("An error has occurred making the request: " + errorThrown)
},
success: function(returnjson){
var returnstuff = returnjson.returnstuff;
//Do next Javascript step here
}
});
您可以运行的成功,随后在成功的JavaScript/jQuery和“栈”事件共同的语法你的Ajax调用。这样,如果它有效,它就会继续。否则,错误处理可能以您定义的方式在提供的错误部分中发生。我通常在一个点击处理程序上激发我的ajax调用,但它确实可以像你所选择的那样在一个函数中运行它。一定要检查你的返回JSON(例如可以从你的处理页面邮寄),以确保它是有效的JSON。 Jsonlint是你的朋友!
我有铬有效地解析错误的HTML和JSON,而其他浏览器几次没有。我怀疑这是专门导致问题的原因。
你是否在任何地方使用'console'对象,比如'console.log'或其他东西? – Anurag 2011-06-15 04:37:54
将'FALSE'更改为'false' – 2011-06-15 04:43:54
@Auurag完全不使用控制台 – Erik 2011-06-17 03:47:09