据我所知,到目前为止,$.ajax
在每个浏览器中都一直运行得非常顺利。
我有一个非常简单的函数,在用户发生一些操作时调用。
在Firefox中,一切运行顺利。但是在Chrome中,$.ajax
请求启动时,成功回调不会触发。
以下是实际代码段:
var form = $("#templateCreator"),
formType = form.attr("method"),
formData = form.serialize(),
action = form.attr('action');
$.ajax({
type: formType,
url: action,
data: formData,
success: function(){
console.log('Can\'t see me in Chrome, but ok in firefox !')
// Handle all form submit events to form validator first
validator(form, targetInput);
}
});
令人费解的是,似乎没有错,数据被序列化并正确发送。有谁知道我错过了什么?
答案 0 :(得分:3)
首先添加一个错误和完整的方法@Jasper建议。
$.ajax({
type: formType,
url: action,
data: formData,
success: function(){
console.log('Can\'t see me in Chrome, but ok in firefox !')
// Handle all form submit events to form validator first
validator(form, targetInput);
},
error: function() {
console.log($.makeArray(arguments));
},
complete: function() {
console.log($.makeArray(arguments));
}
});
然后你可以:
答案 1 :(得分:2)
试试这个......
data:formData, async:false,
Chrome在异步调用方面存在一些问题。
答案 2 :(得分:2)
我遇到了这个问题,并设置了async:false。这适用于Chrome。看起来Chrome有异步问题:true。
restget = function(url, cb){
$.ajax({
url: url,
dataType: 'json',
crossDomain: true,
async: false,
success: cb
});
答案 3 :(得分:0)
我在尝试获取json数组时遇到了类似的问题。我必须将dataType: 'json'
添加到我的ajax中,以便非Firefox浏览器知道我的数据类型是什么。例如:
$.ajax({
type: 'Get',
url: "http://api.geonames.org/earthquakesJSON?north=44.1&south=-9.9&east=-22.4&west=55.2&username=demo",
success: function(data){
var jsonArray = jQuery.parseJSON(data);
alert(jsonArray.status.message);
}
});
和
$.ajax({
type: 'Get',
url: "http://api.geonames.org/earthquakesJSON?north=44.1&south=-9.9&east=-22.4&west=55.2&username=demo",
dataType: 'json',
success: function(data){
var jsonArray = data;
alert(jsonArray.status.message);
}
});
在Firefox firebug中运行时,会显示相同的内容。但是当你在Chrome DevTools中运行它时,它只适用于底层。我希望这可以解决你的问题。