我希望有人可以帮助我。我刚刚开始使用AJAX,我遇到了URL问题。 用户从多选下拉列表中选择一个选项。当他们按保存时,数据将发布到下面的Ajax。
$("#getSelected").click(function (e) {
e.preventDefault();
var myList = $('select#my-select').val();
var list_new = "[" +myList+ "]"
var parseList = JSON.parse(list_new);
var ajaxResponse = $.ajax({
type: 'POST',
url: "/mysite/my-account/updatefavourite.cfm?q=1&buster='+new Date().getTime();",
contentType: "application/json; charset=utf-8",
cache: false,
data: JSON.stringify( parseList ),
success: function() {
$("#successMessage").show();
}
})
alert("test");
location.reload();
});
在Chrome和Firefox中,没有警报就可以正常工作。在IE中,如果我包含警报(" test"),那么一切正常。数据发布到我的页面,它更新数据库,重新加载页面并更新显示列表。删除警报后,网址将不再有效,数据也不会发送到我的网页。 有人可以帮忙吗为什么在IE中它可以使用警报,但不是没有它,如何在没有警报的情况下让它工作。
答案 0 :(得分:3)
问题是因为您在 AJAX请求完成之前调用了reload()
,因此,具体取决于响应返回的速度和浏览器处理的速度,请求已取消,页面已卸载。
要在 AJAX调用的reload()
处理程序中修复此调用success
:
$("#getSelected").click(function(e) {
e.preventDefault();
// vars...
var ajaxResponse = $.ajax({
// ajax settings...
success: function() {
$("#successMessage").show();
location.reload();
}
});
});

即说,制作AJAX请求然后重定向页面非常奇怪。 AJAX的全部意义在于你不必这样做。我建议你修改你的逻辑,只做一个或另一个,即。发送请求中的所有数据以加载页面,或发送AJAX请求,然后使用JS根据需要使用新信息修改DOM。