2011-09-01 26 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