将一个表单提交到两个不同的URL而不使用ajax

时间:2012-09-25 20:29:31

标签: javascript jquery html forms cross-domain

如何在没有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();
        }

谢谢。

3 个答案:

答案 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