好吧,我花了很多時間將非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