2013-05-10 71 views
-1

我有一个应用程序,我需要执行多个表单提交到外部网站。我希望表单提交以打开新标签页。 我所做的是使用JavaScript创建表单元素,然后我只做一个form.submit()。我知道只有一个将通过。多表单提交到跨域网站

我在找工作。一种方法是使用JSONP:

我有这样的事情,到目前为止

 
$.ajax({ 
    dataType: 'jsonp', 
    url: path, 
    type: "POST", 
    async: "false", 
    contentType: 'application/x-javascript', 
    data: $('this').serializeArray(), 
    success: function (html) { 
     if (data != "") {  
       var link = html; 
       window.open(link,'', ''); //open's link in newly opened tab! 
      } 
     }, 
     failure: function (html) { 
     alert(html); 
     } 
    }); 
     return false; 
    }); 

但是连我自己指定的typepost,我在Chrome开发者工具,我有一个实际获得发送见。我猜这是因为window.open。

可有人建议技术来实现这一/

谢谢

+1

*“但是,即使我确实指定了要发布的类型,我在Chrome开发人员工具中看到我有一个实际发送的邮件,我猜这是因为window.open。”*不,这是因为[ JSONP](http://en.wikipedia.org/wiki/JSONP#JSONP)本质上是** GET操作。 – 2013-05-10 21:24:16

+0

有关其他解释,请参阅http://stackoverflow.com/questions/4508198/how-to-use-type-post-in-jsonp-ajax-call – 2013-05-10 21:25:19

+0

谁将其标记为重复项,并引导我进入“How to使用类型:“POST”在jsonp ajax调用“ - 请注意,我的问题不是如何使用POST和jsonp ajax调用。我的问题是执行多个表单提交到跨域网站...如果有一个问题有这个答案(没有),那么你可以标记为完整。 – oneiros 2013-05-10 23:39:35

回答

1

我需要执行多个表单提交给外部网站。我希望表单提交以打开新标签页。我所做的是使用javascript创建表单元素,然后我只做一个form.submit()。

如果您设置表单元素的target attribute"_blank"在HTML,并设置表单元素实例每个外部URL中的action property在一个循环中(例如,设置URL,调用submit;集下一个URL,请致电submit),您应该可以多次提交表单。 (您可能必须在处理用户生成的事件时执行此操作,即使这样,我也不会确定浏览器不会确保  —,并且不应该使用  —块将多个新选项卡发起)。

但我会强烈推回原来的要求,除非它是绝对清楚到你要去当他们点击该按钮或任何在做什么最终用户。

+0

Crowder先生,结果只有这4个表单提交中的一个被提交。在发布之前,我尝试了这种方法。 – oneiros 2013-05-10 21:35:29

+1

@imparator:天哪,如果你只是**在你的问题中提到**。 (四,呃?用什么浏览器?) – 2013-05-10 21:36:37

+1

不能暗示*“我需要执行多个表单提交到外部网站”*? – 2013-05-10 22:01:54