Javascript jQuery ajax在IE中返回空数据
我使用ajax获取一些数据,然后根据这些数据使用html()将其放到页面上 在IE中,返回的数据是空的(它是html)。它仍然会触发success函数,但html不存在。我已经设置了数据类型:“text”,但仍然不起作用 有什么想法吗 谢谢 编辑: 下面是确切的代码:Javascript jQuery ajax在IE中返回空数据,javascript,jquery,Javascript,Jquery,我使用ajax获取一些数据,然后根据这些数据使用html()将其放到页面上 在IE中,返回的数据是空的(它是html)。它仍然会触发success函数,但html不存在。我已经设置了数据类型:“text”,但仍然不起作用 有什么想法吗 谢谢 编辑: 下面是确切的代码: $('#frm').submit(function(event){ event.preventDefault(); var self = this; z = $('#zipcode'
$('#frm').submit(function(event){
event.preventDefault();
var self = this;
z = $('#zipcode');
if(z.val() != '' && z.val().length == 5) {
var value = z.val().replace(/^\s\s*/, '').replace(/\s\s*$/, '');
var intRegex = /^\d+$/;
if(!intRegex.test(value)) {
return false;
}
} else {
return false;
}
$.ajax({
url: "/ajax/zip",
type: 'GET',
async: false,
dataType: 'html',
data: {zipcode: $('.zip_field').val()},
success: function(data) {
if(data == 'false'){
error($(".zip_field"));
return false;
}else{
self.submit();
$('.container').empty().append(data);
}
}
});
})
它正在提交一个邮政编码。在提交时,它会检查以确保它是一个数字,长度为5位数。如果通过,它将转到ajax并检查以确保它是有效的邮政编码(数据库检查),如果失败,它将以文本形式返回“false”,如果良好,则返回一些html
它适用于Firefox和Chrome,但不适用于IE。如果效果良好,它会提交表单,但返回的数据是空的,并附加为空空间。一件事可能是浏览器缓存了此URL。如果您获得
304
状态,您的响应文本将为空。检查HTTP缓存头,并正确调整它们。您还可以尝试使用POST
(仅缓存GET
)。
另外,如果设置正确,请查看内容长度
如果以上任何一项都不起作用,请检查网络呼叫将为您(和我们)提供的一些其他详细信息,尝试IE的开发工具
您还可以尝试直接使用XMLHttpRequest的对象获得相同的请求(假设您使用的是IE>6) 一件事可能是浏览器缓存了此URL。如果您获得
304
状态,您的响应文本将为空。检查HTTP缓存头,并正确调整它们。您还可以尝试使用POST
(仅缓存GET
)。
另外,如果设置正确,请查看内容长度
如果以上任何一项都不起作用,请检查网络呼叫将为您(和我们)提供的一些其他详细信息,尝试IE的开发工具
您还可以尝试直接使用XMLHttpRequest的对象获得相同的请求(假设您使用的是IE>6)
- 演示:
$('#frm').submit(function (e) {
e.preventDefault(); // this one already act as return false...
var form = $(this);
// why you have .zip_field & #zip_code ?
var zip_code = $.trim($('#zip_code').val());
var valid = (zip_code.length === 5 && !isNaN(zip_code)) ? true : false;
if (valid) {
$.get('/ajax/zip', {
zipcode: zip_code
}, function (data) {
if (data == 'false') {
alert('error!');
} else {
//if you submit the form here
//form.submit(); then the line below
//is totally useless
$('.container').html(data);
//.empty().append() is = .html()
}
});
}
});
- 注意:chrome和firefox不显示错误并不意味着没有错误;internet explorer每次运行错误的代码等时都会显示错误。此外,我强烈怀疑您的代码是否真的能像预期的那样工作,因为它没有您想象的那么好。我想问题出在您的代码中,与jQuery本身或它的ajax函数或数据类型无关
- 演示:
$('#frm').submit(function (e) {
e.preventDefault(); // this one already act as return false...
var form = $(this);
// why you have .zip_field & #zip_code ?
var zip_code = $.trim($('#zip_code').val());
var valid = (zip_code.length === 5 && !isNaN(zip_code)) ? true : false;
if (valid) {
$.get('/ajax/zip', {
zipcode: zip_code
}, function (data) {
if (data == 'false') {
alert('error!');
} else {
//if you submit the form here
//form.submit(); then the line below
//is totally useless
$('.container').html(data);
//.empty().append() is = .html()
}
});
}
});
- 注意:chrome和firefox不显示错误并不意味着没有错误;internet explorer每次运行错误的代码等时都会显示错误。此外,我强烈怀疑您的代码是否真的能像预期的那样工作,因为它没有您想象的那么好。我想问题出在您的代码中,与jQuery本身或它的ajax函数或数据类型无关
我在IE和谷歌浏览器上也有同样的问题 由于安全原因,$.ajax在此浏览器中不工作 所以如果你想明确地运行 对于chrome,使用chrome运行
chrome.exe --disable-web-security
在IE中,您需要更改“菜单>工具>互联网选项”中的设置。在IE和谷歌浏览器中,我也有同样的问题 由于安全原因,$.ajax在此浏览器中不工作 所以如果你想明确地运行 对于chrome,使用chrome运行
chrome.exe --disable-web-security
在IE中,您需要从“菜单>工具>互联网选项”更改某些版本的设置,然后简单地放弃它;我以前被这个咬过
确保返回的HTML对IE认为您正在使用的doctype有效(请使用IE中的开发人员工具查看),并使用检查HTML。显然,它会抱怨缺少
、
等,但会忽略这些错误,并将重点放在其他错误上。一旦你解决了这些问题,它就会开始工作
此外,还有很多改进代码的好方法。一些版本的,只需丢弃它;我以前被这个咬过
确保返回的HTML对IE认为您正在使用的doctype有效(请使用IE中的开发人员工具查看),并使用检查HTML。显然,它会抱怨缺少
、
等,但会忽略这些错误,并将重点放在其他错误上。一旦你解决了这些问题,它就会开始工作
此外,还有很多改进代码的好技巧。您是否尝试过改为
dataType:html
?也许我们可以看到一些代码?您是否可以显示ajax调用代码,以及firebug中的任何错误,您是否可以看到firebug响应中返回的数据?另外,请确认返回的html是有效的html。你很挑剔,除了你试过的以外?您是否尝试通过直接URL访问ajax页面您是否尝试了dataType:html
?也许我们可以看到一些代码?您是否可以显示您的ajax调用代码,以及firebug中的任何错误,您是否可以看到firebug响应中返回的数据?另外,请确认返回的html是有效的html。你很挑剔,除了你试过的以外?您是否尝试通过直接URL而不是使用IE开发工具来访问ajax页面?我建议您在IE中的网络监控部分使用类似fiddlr的东西。使用开发工具监控请求应该足够了–通常在其他浏览器上。我考虑过fiddlr,但我并不建议它避免安装和解释额外的软件,在这种情况下,除了嵌入式开发工具之外,它不会带来任何好处。除了IE9之前版本中的IE网络工具有各种奇怪的bug和