Хорошо, я потратил много времени, превращая не-AJAX корзину покупок в AJAX.
Я сделал это, разделив различные разделы на вкладки с помощью вкладок пользовательского интерфейса jQuery.Затем я использую AJAX для публикации изменений на одной вкладке и выборочного обновления других вкладок.Выборочное обновление просто захватывает результат сообщения и использует селектор jQuery, чтобы получить только соответствующий div из ответа.
В этом конкретном случае вкладка с информацией о доставке публикует и обновляет вкладку со списком методов доставки.
Это работает безупречно, за исключением одного браузера: Firefox 3.6.x (Mac и Windows)
В Firefox 3 селектор извлекает усеченный результат из результата POST, который эффективно удаляет важные кнопки и не позволяет пользователю продолжить.
Вот полный ответ html с форматированием:
http://pastebin.com/aVF6yUba
РЕДАКТИРОВАТЬ: Выше, очевидно, не на 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>
Я не могу найти ни рифмы, ни причины для этого.
В качестве временного решения я написал некоторый JavaScript, который обнаруживает Firefox 3 и вынуждает выполнить полное обновление, чтобы получить их на следующей вкладке.
У кого-нибудь есть идеи о том, как заставить это работать должным образом?
Спасибо!Клиф
РЕДАКТИРОВАТЬ.Вот полный 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");
}
});