Javascript jQuery.html()的回调函数?

Javascript jQuery.html()的回调函数?,javascript,jquery,ajax,json,Javascript,Jquery,Ajax,Json,我有以下代码: $.ajax({ type: 'GET', url: 'index.php?route=checkout/onepagecheckout/getpaypaldata', dataType: 'json', success: function(json) { $('#pp_info').html(json['output']);

我有以下代码:

$.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内容并提交表单

你可以试试这个

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

首先,响应不是json。这是HTML响应,请检查您的代码。HTML方法应该是同步的。正如UmeshA指出的,您的问题可能是其他问题。这是json,唯一的问题是html内容作为字符串存储在jsonp['output']中。json对象还包含一些其他信息。这是我所期望的,但如果我发出警报('bla-bla'),就会发生这样的情况;在.html()和submit之间。。一切正常!这根本没有意义,但是settimeout应该可以解决它<代码>设置超时(函数(){$('#payment').submit();},0)jQuery和.以前从未听说过promise()。打开了一个充满可能性的世界!这与setTimeout(fn)的作用相同。html方法没有回调,并且这个承诺不会等待html方法完成。它只是将回调推送到回调队列,从而使其在html中的javascript运行之后运行。在这种情况下,setTimeout将更加清晰,而不是让人们认为.html()可以有回调。