2012-06-22 89 views
20

我有以下代碼:jQuery .html()的回調函數?

$.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="[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> 

其中包含貝需要以處理訂單的信息。一切正常,除了我相信有時表單會在jQuery .html函數加載html內容之前被提交。

有.html的任何回調函數嗎?或者我可以用來解決問題的其他方法? PayPal數據以HTML形式出現,我無法更改該部分,所以我只有一個選項可以加載html內容並提交表單!

+2

首先響應的是不是一個JSON。這是HTML迴應,請檢查您的代碼。 –

+1

.html方法應該是同步的。正如UmeshA指出的那樣,你的問題可能是另一回事。 – hugomg

+0

它是json,唯一的事情就是將html內容作爲字符串存儲在jsonp ['output']中。 json對象也包含一些其他信息。 – Tohid

回答

41

你可以試試這個

success: function(json) { 
    $('#pp_info').html(json['output']).promise().done(function(){ 
     $('#payment').submit(); 
    }); 
} 
+0

顯然它工作:)非常感謝你很多 – Tohid

+0

歡迎您:-) –

+3

jQuery [promise](http://api.jquery.com/promise/)和[detail](http://net.tutsplus.com/tutorials/javascript-ajax/wrangle-異步任務與 - jQuery的承諾/)。 –