2010-03-10 103 views
1

我有一个页面,其上需要发布到外部URL的表单。不过,我也需要将这些信息发送到当前页面(mypage.php)。出于安全原因,我不能只发布到mypage.php并使用cURL通过PHP发布到外部网站 - 表单必须直接提交到外部网站。提交之前的jQuery表单发布

此代码将在mypage.php找到并不起作用(我假设提交myForm会的不是等待后):

$('#myform').submit(function() { 
    $.post('mypage.php', serialized_form, 
     function(data) { 
      ... 
     }, 'html' 
    ); 
} 

... 

<form id="myform" action="http://example.org" method="post"> 
... 
</form> 

什么是做这样的事情的最好方法?

谢谢!

回答

5

您可以使$ .post()同步,这将阻止javascript(和站点)继续,直到它返回。

如果你使用$.ajax({type: 'post', async: false})(加上你的其他参数)应该做的伎俩。

您可以阅读@http://api.jquery.com/jQuery.ajax/

+0

哈哈,哎呀,是啊 – Seaux 2010-03-10 16:08:52

0

更多信息它会为你工作?

$('#myform').submit(function() { 
$.post('mypage.php', serialized_form, 
    function(data) { 
     ... 
     $.post('http://example.org', serialized_form, ....); 
    }, 'html' 
); 
return false; 
} 

<form id="myform" method="post">...</form> 
+0

没有,因为我需要的形式,但要完成它的行动(与用户被带到外部网站,而这样的)。 – Wickethewok 2010-03-10 16:10:06

+0

我不认为他正在尝试做两个Ajax请求......只有一个到他的网站,然后实际上有形式去其他网站 – Seaux 2010-03-10 16:10:42

0

如果我理解你的问题,那么你需要你的数据到$ url,然后仍然提交表单。希望下面的代码对你的作品(未测试^^):

;(function($) { 
    var sent = false; 

    $('#myform').submit(function() { 
     if(sent) { 
      return true; 
     } 

     $.post('mypage.php', serialized_form, 
      function(data) { 
       sent = true; 
       $('#myform').submit(); 
      }, 
      'html' 
     ); 

    return false; 
    }); 
})(jQuery); 
+0

我曾尝试过这样的事情,但对submit()的调用不起作用。 – Wickethewok 2010-03-10 16:37:35