我在AJAX调用中遇到一个奇怪的问题,它在Firefox中工作,但在IE中却没有。当我添加IE alert()时,我看到了返回的内容,但它不希望使用jQuery .html()命令插入。这是我的示例代码:
$(document).on('click','.OpenForm',function(e) {
e.preventDefault();
var FormControl = $(this).attr('id'); //ex: id=FormView_12 or FormEdit_12
FormControl = FormControl.split('_');
var FormControlType = FormControl[0];
var FormID = FormControl[1];
$.post("./includes/Getform.php", { "t" : "view" , FormID : FormID })
.done(function(data) {
if (data.length>0){
data = data.replace(/(\r\n|\n|\r)/gm,"");
//alert(data); ---THIS ALERTS THE RESPONSE IN IE8
//console.log(data); --- THIS SHOWS RESPONSE IN FF
$('.ProjectContentLoad').html(data).show();
}
})
.fail( function(xhr, textStatus, errorThrown) {
error_handling(xhr.responseText);
});
});
答案 0 :(得分:1)
也许您返回的HTML无效。 FF没有问题,但IE8肯定会;)也许你忘了关闭一个div?
以下帖子显示了一些人遇到完全相同的问题:jQuery AJAX GET html data IE8 not working
答案 1 :(得分:0)
您的JS控制台上是否有任何错误消息?你能说明什么是数据内容吗?
我正在考虑两件事:
1)如果您未在IE8中运行开发工具,则未定义console.log()。要解决此问题,请将此代码放在页面顶部:
<script type="text/javascript"> if (!window.console) console = {log: function() {}}; </script>
来源:'console' is undefined error for Internet Explorer
2)可能是IE的AJAX缓存问题(我不认为因为你使用的是post()),试着把这段代码放在你的页面顶部:
$.ajaxSetup({ cache: false });
来源:How to prevent a jQuery Ajax request from caching in Internet Explorer?
答案 2 :(得分:0)
只是在黑暗中拍摄,但IE不会被你发送的JS对象弄糊涂了吗?
{ "t" : "view" , FormID : FormID }
你是否有任何理由将字符串用作“t”的键?