2010-01-07 91 views
0

我有一個jQuery ajax函數。回調函數由兩個函數組成:在jQuery中保留函數順序ajax回調函數

1)取ajax結果(這是一個html表單)並將其作爲html span的內部html插入。 2)提交此表格

如何確保表單在JavaScript嘗試提交之前加載?

代碼:

$("select").live("change", function(){ 
    FormUpdate(); 
}) 

function FormUpdate() { 

    $.ajax({ 
    type: "POST", 
    url: "index.php?UpdateForm=Yes", 
    data: $("#Form").serialize(), 
    success: function(msg){ 
    $("span#Content").html(msg); 
    $("#Form").submit(); 
    } 
    }); 

} 

我的問題就來了,因爲JavaScript嘗試提交表單,它加載和我的數據在提交前。

回答

1

只需簡單地把用於獲取ajax結果的函數放入前面的DOM中,並在後面插入表單提交函數即可。

只有在插入完成後,纔會調用下一個函數。

例子:

$.ajax({ 
    type: "POST", 
    url: "backend.php", 
    data: "name=John", 
    dataType: "json" 
    success: function(msg){ 
    $("#thediv").html(msg.html); 
    $("form#theform").submit(); 
    } 
}); 
+0

我想我的代碼有另一個問題,如果回調函數是同步的 – Brian 2010-01-07 23:19:21

+0

有什麼問題? – mauris 2010-01-08 00:50:19

0

DOM操作是同步的,所以表單不會被提交,直到以後。你有這種情況下的特定問題嗎?請發佈大量的代碼,如果是這樣的話:)

+0

正確的,如果你不能看到它發生的事情(這將是閃電快:P),你可以嘗試把$(「#表」)提交()調用的timeout()函數 – Nakul 2010-01-07 23:22:10