Функция обратного вызова для jQuery .html ()?

20

У меня есть следующий код:

$.ajax({
      type: 'GET',
      url: 'index.php?route=checkout/onepagecheckout/getpaypaldata',
      dataType: 'json',
      success: function(json) {
                              $('#pp_info').html(json['output']);
                              $('#payment').submit();
                              }
      });

Запросы ajax получают объект json, содержащий форму html, например:

<form id="payment" method="post" action="https://www.paypal.com/cgi-bin/webscr">
<input type="hidden" value="_cart" name="cmd">
<input type="hidden" value="1" name="upload">
<input type="hidden" value="[email protected]" name="business">
<input type="hidden" value="Sample Item Name" name="item_name_1">
<input type="hidden" value="TESTI-1" name="item_number_1">
<input type="hidden" value="104.98" name="amount_1">
<input type="hidden" value="1" name="quantity_1">
<input type="hidden" value="0" name="weight_1">
<input type="hidden" value="Type" name="on0_1">
<input type="hidden" value="As Shown" name="os0_1">
<input type="hidden" value="Delivery Date" name="on1_1">
<input type="hidden" value="Jun 23,2012" name="os1_1">
<input type="hidden" value="Comments" name="on3_1">
<input type="hidden" value="test message" name="os3_1">
</form>

который содержит информацию, которую требуется PayPal для обработки заказа. Все работает отлично, за исключением того, что я иногда верю, что форма отправляется до того, как функция jQuery.html выполняется с загрузкой содержимого html.

Есть ли функция обратного вызова для .html? или любой другой метод, который я могу использовать для решения проблемы? данные PayPal поступают как HTML-форма, и я не могу изменить эту часть, поэтому у меня есть только один вариант, который каким-то образом загружает содержимое html и отправляет форму!

  • 2
    Прежде всего, ответ не JSON. Это ответ HTML, пожалуйста, проверьте ваш код.
  • 1
    Метод .html должен быть синхронным. Как указала UmeshA, ваша проблема скорее всего в чем-то другом.
Показать ещё 4 комментария

1 ответ

40
Лучший ответ

Вы можете попробовать это

success: function(json) {
    $('#pp_info').html(json['output']).promise().done(function(){
        $('#payment').submit();
    });
}
  • 0
    по-видимому, это работает :) большое спасибо
  • 0
    Добро пожаловать :-)
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню