我正在使用ajax获取一些数据,然后根据数据使用html()将其放在页面上。
在IE中,返回的数据为空(它是html)。它仍会触发成功功能,但html不存在。我已经设置了dataType:“text”但仍然不起作用。
有什么想法吗?
谢谢!
编辑:
以下是确切的代码:
$('#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。当它很好时,它会提交表单,但返回的数据为空,并附加为空格。
答案 0 :(得分:6)
你的代码不起作用只是因为它有bug,它与IE无关。 它应该是下面的东西。
$('#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函数或
dataType
。
答案 1 :(得分:3)
有一件事可能是浏览器缓存了此URL。如果您获得304
状态,则您的回复文字将为空。检查HTTP缓存标头,并正确调整它们。您还可以尝试使用POST
(仅缓存GET
)。
另外,如果设置正确,请查看Content-Length。
如果上述情况无效,请检查网络的电话会给你(和我们)一些额外的细节,试试IE的开发工具。
您也可以尝试直接使用XMLHttpRequest对象获取相同的请求(假设您使用的是IE> 6)。
答案 2 :(得分:1)
我在IE和谷歌浏览器中遇到同样的问题
$。由于安全原因,ajax无法在此浏览器中运行。
所以,如果你想明确地运行
用于运行chrome chrome chrome
chrome.exe --disable-web-security
在IE中,您需要更改菜单>工具>互联网选项
中的设置答案 3 :(得分:1)
IE will not ~repair~ invalid HTML in XHR requests的某些版本,只是丢弃它;我以前一直被这个咬过。
确保返回的HTML对IE认为您正在使用的doctype有效(使用IE中的开发人员工具查看),并使用a validator tool检查您的HTML。显然,它会抱怨丢失<html>
,<head>
等,但忽略了这些并关注其他错误。一旦你修好了它,就应该开始工作了。
此外,aSeptik's answer还有很多改进代码的好建议。