下面的ajax调用提交表单数据并从服务器接收反馈作为json编码的对象/数组。适用于IE10以及最新版本的FF和Chrome。IE8和jquery.post ajax调用不起作用

在IE8中不起作用。使用IE8开发人员工具,我可以看到json数组实际上是从我的服务器返回到我的浏览器。然而,在“$ .each”语句的行中,它完全跳过了该循环,就好像ajax响应中没有数据。

有谁知道这个问题是什么?我读过其他论坛的一些建议使用datatype = json,但不知道如何适应我的代码。其他人建议将.post更改为.ajax。但是我不想在我真正理解为什么IE8在这方面失败之前做出改变。从服务器返回的响应

$.post("<?php echo Router::url(array('controller'=>'Bookings','action'=>'saveBooking_ajax')); ?>", $(".reservationform").serialize(), function() {

})

.done(function(data) {

parseddata = JSON.parse(data);

//IE8 totally skips this next part even if parseddata has data

$.each(parseddata, function(key, value) {

if (key == "status") status = value;

if (key == "message") message = value;

if (key == "failuretype") failuretype = value;

if (key == "bookingref") bookingref = value;

});

例如:

{"status":true,"failtype":"USER","message":"","timeslots":[[{"18:00:00":"6:00 pm"},{"18:10:00":"6:10 pm"},{"18:20:00":"6:20 pm"},{"18:30:00":"6:30 pm"},{"18:40:00":"6:40 pm"},{"19:20:00":"7:20 pm"},{"19:30:00":"7:30 pm"},{"19:40:00":"7:40 pm"},{"20:20:00":"8:20 pm"},{"20:30:00":"8:30 pm"},{"20:40:00":"8:40 pm"}]]}

ANSWERED使用@BARMAR ANSWER

我已经改变使用 “JSON” 参数设置为我的部分代码。通话后。

我相信这会自动将返回分析为json对象,因此我不必在done()函数中调用JSON.parse(data)。无论如何,JSON.parse(数据)在IE8中不起作用。请注意,我没有尝试使用Barmar建议的“$ .parseJSON()”。

//parseddata = JSON.parse(data);

此外,我再直接访问返回的对象变量suggesed:

status = data.status;

message = data.message;

failtype = data.failtype;

timeslots = data.timeslots;

这似乎在大多数情况下工作。但在IE8中对于变量“状态”不起作用!因为变量“status”在页面加载时由于某种原因而被键入为没有值的字符串,并且无法传递data.status的值,该值是一个真正的非字符串布尔值。因此,变量“地位​​”保持为“”。其他变量似乎很好。

这很奇怪,因为它适用于其他现代浏览器,变量“status”已经被键入为一个空字符串“”,尽管data.status = true,它不知何故成功地将值分配给“status”变量“状态”是布尔值“真”的字符串版本。

对不起,如果这是很长的啰嗦,但尽管IE8s无法纯粹的布尔值的字符串变量,我想我应该停止使用“状态”作为变量名称的事实,某个地方未知其已被键入和初始化为“”。

请参阅Firefox中的调试屏幕,其中var“status”神秘地预先键入为空字符串。在IE中也一样。

YnJMI.jpg 我也意识到我应该使用“var”在回调中声明变量。不使用var已经导致它们进入全局范围,并且保持了以前回调的相同值。

无论如何,我正在回答这个问题,因为原来的问题已经得到解答。

2014-06-29

aDvo

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐