在我的注册过程结束时,您会进入付款屏幕,您可以在其中输入优惠券代码,并且有一个AJAX调用,它从数据库中提取优惠券并将其返回给页面因此它可以在提交给PayPal之前应用于您的总计。它在Firefox,Chrome和Safari中运行良好,但在Internet Explorer中没有任何反应。返回给jQuery函数的(数据)显示为空。Internet Explorer ajax请求不返回任何东西
jQuery的帖子
function applyPromo() {
var enteredCode = $("#promoCode").val();
$(".promoDiscountContainer").css("display", "block");
$(".promoDiscount").html("<img src='/images/loading.gif' alt='Loading...' title='Loading...' height='18' width='18' />");
$.post("/ajax/lookup-promo.php", { promoCode : enteredCode },
function(data){
if (data != "error") {
var promoType = data.getElementsByTagName('promoType').item(0).childNodes.item(0).data;
var promoAmount = data.getElementsByTagName('promoAmount').item(0).childNodes.item(0).data;
$(".promoDiscountContainer").css("display", "block");
$(".totalWithPromoContainer").css("display", "block");
if (promoType == "percent") {
$("#promoDiscount").html("-" + promoAmount + "%");
var newPrice = (originalPrice - (originalPrice * (promoAmount/100)));
$("#totalWithPromo").html(" $" + newPrice);
if (promoAmount == 100) {
skipPayment();
}
}
else {
$("#promoDiscount").html("-$" + promoAmount);
var newPrice = originalPrice - promoAmount;
$("#totalWithPromo").html(" $" + newPrice);
}
$("#paypalPrice").val(newPrice + ".00");
$("#promoConfirm").css("display", "none");
$("#promoConfirm").html("Promotion Found");
finalPrice = newPrice;
}
else {
$(".promoDiscountContainer").css("display", "none");
$(".totalWithPromoContainer").css("display", "none");
$("#promoDiscount").html("");
$("#totalWithPromo").html("");
$("#paypalPrice").val(originalPrice + ".00");
$("#promoConfirm").css("display", "block");
$("#promoConfirm").html("Promotion Not Found");
finalPrice = originalPrice;
}
}, "xml");
}
相应的PHP页面
当我运行在IE浏览器的代码,我得到的Javascript行一个JavaScript错误说
var promoType = data.getElementsByTagName('promoType').item(0).childNodes.item(0).data;
这里的IE调试alt text http://img697.imageshack.us/img697/52/screenshot20100414at622.png
更新
我设置就行了断点的截图,它实际上遇到错误在这条线:
if (data != "error") {
无论其,当我允许它在断点后运行代码的其余部分时,它就可以工作。我在想,也许IE在ajax请求实际完成之前运行回调函数,所以PHP还没有返回结果呢?有什么方法可以测试吗?
很奇怪,'data'确实是一个定义的名字(即使函数被调用时没有传入任何东西),因为它是该函数的一个参数。你确定错误在那条线上吗? – 2010-04-14 22:16:23
你是对的,错误是在别的地方。编辑。 – 2010-04-14 22:25:46
IE有一个JS控制台,不是吗?使用断点停止有问题的行上的执行,并且一次添加一个方法调用来运行该行,直到找出哪一个失败。 – 2010-04-14 22:27:12