ie8 ajax 不走success,IE8和jquery.post ajax调用不起作用

下面的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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值