如何在没有ajax(跨域问题)的情况下将一个表单提交到两个不同的位置
我在想下面的事情。我只能通过params?
< form action="urlOne.com/something" method="post" onsubmit="postToUrl("urlTwo.com/something");">
<input type="text" value="hello" name="hi"/>
<input type="submit" value="submit">
</form>
从这里获取的功能&gt;&gt; JavaScript post request like a form submit
function postToUrl(url, params)
{
var form = $('<form>');
form.attr('action', url);
form.attr('method', 'POST');
var addParam = function(paramName, paramValue){
var input = $('<input type="hidden">');
input.attr({ 'id': paramName,
'name': paramName,
'value': paramValue });
form.append(input);
};
// Params is an Array.
if(params instanceof Array){
for(var i=0; i<params.length; i++){
addParam(i, params[i]);
}
}
// Params is an Associative array or Object.
if(params instanceof Object){
for(var key in params){
addParam(key, params[key]);
}
}
// Submit the form, then remove it from the page
form.appendTo(document.body);
form.submit();
form.remove();
}
谢谢。
答案 0 :(得分:4)
您只能在窗口中一次发布一个表单。如果您尝试发布两个表单,则一个帖子将停止另一个表单。
解决方案是将两个表单发布到不同的窗口。您可以将第一个表单的目标设置为发布到页面中的iframe或新窗口:
form.attr('target', '_blank');
这样两个帖子就会加载到不同的窗口中,并且不会相互阻止。
答案 1 :(得分:1)
如果你只是想把一个“隐形”帖子发给另一个网址...在这种情况下,网址是workout.php
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
$(function() {
$('form').submit(function(data) {
$.post('workout.php', $(this).serialize());
});
});
</script>
<form action="urlOne.com/something" method="post">
<input type="text" value="hello" name="hi"/>
<input type="submit" value="submit">
</form>
答案 2 :(得分:0)
如果您使用代理服务器端,则可以将crossdomain ajax与jQuery一起使用。
或:
使用apache的mod_rewrite或mod_proxy传递来自您的请求 服务器到其他服务器。在您的客户端代码中,您只需创建 请求好像它实际上在您的服务器上 - 没有浏览器问题 接着就,随即。然后Apache发挥其魔力并向该请求发出请求 其他服务器。
这是在php中实现此目的的链接: http://developer.yahoo.com/javascript/howto-proxy.html#phpproxy