好吧,我花了很多时间将非AJAX购物车结账转换为AJAX结帐。非常奇怪的Firefox 3.6.x中的jQuery选择器错误
我通过使用jQuery UI选项卡将各个部分分隔成选项卡来完成此操作。然后我使用AJAX在一个选项卡上发布更改并选择性地刷新其他选项卡。选择性刷新只是简单地抓取帖子的结果,并使用jQuery选择器从响应中只抓取相关的div。
在这种特殊情况下,包含送货信息的选项卡将发布并刷新带有送货方式列表的选项卡。
这完美的作品除外一个浏览器:Firefox 3.6.x的(Mac和Windows)
在Firefox 3中,选择回拉从POST,它有效地消除关键按钮,并防止结果的整数部分的结果用户继续。
以下是完整的HTML响应,使用格式:
编辑:以上是与实际输出显然不是100%一致。这里是真正的RAW输出: http://pastebin.com/ChAT1vLf
这里是JavaScript代码的相关行:
jQuery("#shipping-method-section").html(output.html());
以下是其他浏览器与线拉回来:
<!--- shipping method section --->
<h2>Select a shipping method:</h2>
<ul id="shipping-methods">
<li><span><label><input name="shipmethod" value="FedEx+Priority+Overnight" class="shopp shipmethod" type="radio"> FedEx Priority Overnight — <strong>$30.68</strong> <span>Estimated Delivery: September 28, 2011</span> </label> </span> </li>
<li> <span> <label><input name="shipmethod" value="FedEx+Standard+Overnight" class="shopp shipmethod" type="radio"> FedEx Standard Overnight — <strong>$26.46</strong> <span>Estimated Delivery: September 28, 2011</span> </label> </span> </li>
<li> <span> <label><input name="shipmethod" value="FedEx+2Day" class="shopp shipmethod" type="radio"> FedEx 2Day — <strong>$19.10</strong> <span>Estimated Delivery: September 29, 2011</span> </label> </span> </li>
<li> <span> <label><input name="shipmethod" value="FedEx+Express+Saver" class="shopp shipmethod" type="radio"> FedEx Express Saver — <strong>$18.79</strong> <span>Estimated Delivery: September 30, 2011</span> </label> </span> </li>
<li> <span> <label><input name="shipmethod" value="FedEx+Home+Delivery" class="shopp shipmethod" checked="checked" type="radio"> FedEx Home Delivery — <strong>$13.52</strong> <span>Estimated Delivery: September 27, 2011</span> </label> </span> </li>
</ul>
<hr>
<div class="tab-back-button">
<input class="tab-back-button" value="Shipping Address" type="button">
</div>
<input value="Payment Method" name="shipping-method-section-button" class="shipping-method-section-button" type="button">
这里是什么Firefox 3.6.x回退:
<h2>Select a shipping method:</h2>
<ul id="shipping-methods">
<li><span><label><input name="shipmethod" value="FedEx+Priority+Overnight" class="shopp shipmethod" type="radio"> FedEx Priority Overnight — <strong>$30.68</strong> <span>Estimated Delivery: September 28, 2011</span> </label> </span> </li>
<li> <span> <label><input name="shipmethod" value="FedEx+Standard+Overnight" class="shopp shipmethod" type="radio"> FedEx Standard Overnight — <strong>$26.46</strong> <span>Estimated Delivery: September 28, 2011</span> </label> </span> </li>
<li> <span> <label><input name="shipmethod" value="FedEx+2Day" class="shopp shipmethod" type="radio"> FedEx 2Day — <strong>$19.10</strong> <span>Estimated Delivery: September 29, 2011</span> </label> </span> </li>
<li> <span> <label><input name="shipmethod" value="FedEx+Express+Saver" class="shopp shipmethod" type="radio"> FedEx Express Saver — <strong>$18.79</strong> <span>Estimated Delivery: September 30, 2011</span> </label> </span> </li>
<li> <span> <label><input name="shipmethod" value="FedEx+Home+Delivery" class="shopp shipmethod" checked="checked" type="radio"> FedEx Home Delivery — <strong>$13.52</strong> <span>Estimated Delivery: September 27, 2011</span> </label> </span> </li>
</ul>
我可以找不到任何押韵或原因。
作为临时解决方法,我编写了一些检测Firefox 3的JavaScript并强制进行全面刷新,以使它们进入下一个选项卡。
任何人有任何想法如何使这项工作正常?
谢谢! Clif
编辑。下面是完整的JavaScript:
jQuery.post(url, data, function(output) {
if(error_check_passed(output, "FedEx"))
{
jQuery("#shipping-section").css({ 'opacity' : 1.0 });
update_cart_summary(output);
hide_errors();
output = jQuery("#shipping-method-section", jQuery(output));
jQuery("#shipping-method-section").html(output.html());
allowTabChange = true;
jQuery("#checkout-tabs").tabs('select', 1);
}
else
{
jQuery("#shipping-section").fadeTo('fast', 1.0);
show_errors(output, "FedEx");
}
});
我认为“相关的JavaScript行”很可能与AJAX交互有关。另外我假设你已经用Firebug等检查了实际的HTTP响应。 – Pointy
什么是'output',它来自哪里? –
为了减少噪音,我包含了一个最小值。我已经添加了整个JavaScript块。输出是我放入PasteBin中的POST的原始数据。我已经用FireBug检查过它,因此我知道问题出在哪里。 – clifgriffin