23

次のコードがあります。

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

ajax リクエストは、次のような html フォームを含む json オブジェクトを受け取ります。

<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="test@yahoo.ca" 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 コンテンツを読み込んでフォームを送信するという 1 つのオプションしかありません。

4

1 に答える 1

46

あなたはこれを試すことができます

success: function(json) {
    $('#pp_info').html(json['output']).promise().done(function(){
        $('#payment').submit();
    });
}
于 2012-06-22T19:51:33.373 に答える