2012-06-22 45 views
20

Tôi có đoạn mã sau:Chức năng gọi lại cho jQuery .html()?

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

Các yêu cầu ajax nhận một đối tượng JSON chứa một dạng html như:

<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> 

chứa các thông tin mà PayPal yêu cầu để xử lý đơn đặt hàng. Mọi thứ hoạt động tốt ngoại trừ tôi tin rằng đôi khi biểu mẫu được gửi trước khi hàm .html jQuery được thực hiện bằng cách tải nội dung html.

Có chức năng gọi lại nào cho .html không? hoặc bất kỳ phương pháp nào khác mà tôi có thể sử dụng để giải quyết vấn đề? dữ liệu PayPal đến dưới dạng biểu mẫu HTML và tôi không thể thay đổi phần đó, vì vậy tôi chỉ có một tùy chọn bằng cách nào đó tải nội dung html và gửi biểu mẫu!

+2

Đầu tiên của tất cả các câu trả lời không phải là một json. Đây là phản hồi HTML, vui lòng kiểm tra mã của bạn. –

+1

phương thức .html phải đồng bộ. Như Umesha đã chỉ ra, vấn đề của bạn có thể là một thứ khác. – hugomg

+0

là json, điều duy nhất là nội dung html được lưu trữ trong jsonp ['output'] dưới dạng chuỗi. đối tượng json chứa một số thông tin khác. – Tohid

Trả lời

41

Bạn có thể thử này

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

dường như nó hoạt động :) cảm ơn bạn rất nhiều – Tohid

+0

Bạn được chào đón :-) –

+3

jQuery [lời hứa] (http://api.jquery.com/promise/) và [chi tiết] (http://net.tutsplus.com/tutorials/javascript-ajax/wrangle- async-tasks-with-jquery-promise /). –

Các vấn đề liên quan