2011-09-01 24 views
0

我有一個函數開始於提交表單#uploadform,即enctype="multipart/form-data"。問題是,當這個表單被提交時,我運行另一個函數向文檔發送一個post請求並接收信息。我希望這些信息以最初的形式#uploadform提交,但似乎這個帖子在表單提交後發生,所以這些值不會被添加。 #progress_key已成功添加到表單中,因爲它發生在通話後。任何人有任何想法呢?在提交之前更改表格的形式

$('#uploadform').submit(function(){ 

beginUpload(); 

} 


function beginUpload() { 
$('#progress_key').val(rand_id); 

$.ajax({ 
type: "POST", 
url: "progressbar/initial.php", 
data: 'data, 
dataType: 'json', 
success: function(response, statusText) { 

if(response.error == '') { 

vid_id=response.vid_id; 
file_name=response.file_name; 

$('#file_name').val(vid_id); 
$('#vid_id').val(file_name); 
} 
} 
}); 
} 

回答

3

要做到這一點,並避免作出採用同步Ajax請求您可以從您提交處理這樣的返回false:

$('#uploadform').submit(function(){ 
    beginUpload(); 
    $(this).unbind('submit'); 
    return false; 
} 

然後在你的Ajax調用成功函數末尾提交像這樣:

$('#uploadform').submit(); 
+0

你將不得不調用表單元素的submit()方法,而不是jQuery的方法,因爲這將只是再次調用處理程序。即,'document.getElementById('uploadform')。submit()' – Phil

+0

@Phil jQuery文檔說這種形式的提交調用.trigger而不是.bind,因此它與調用表單的提交方法相同 – LeleDumbo

+0

@Phil http:/ /jsfiddle.net/Paulpro/UWyC2/ – Paulpro