1

我如何在没有 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>

从这里获取的函数 >> JavaScript 发布请求,如表单提交

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();
        }

谢谢你。

4

3 回答 3

4

您一次只能在一个窗口中发布一个表格。如果您尝试发布两个表格,一个帖子将阻止另一个。

解决方案是将这两个表单发布到不同的窗口。您可以将第一个表单的目标设置为发布到页面中的 iframe 或新窗口:

form.attr('target', '_blank');

这样,这两个帖子将在单独的窗口中加载,并且不会互相阻止。

于 2012-09-25T20:38:28.080 回答
1

如果您只想在另一个 URL 上发布“不可见”的帖子……在这种情况下,URL 是锻炼.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>
于 2012-09-25T21:17:09.740 回答
0

如果您使用代理服务器端,则可以将跨域 ajax 与 jQuery 一起使用。

或者:

使用 apache 的 mod_rewrite 或 mod_proxy 将请求从您的服务器传递到其他服务器。在您的客户端代码中,您只需像实际在您的服务器上一样发出请求 - 没有浏览器问题。然后 Apache 会发挥它的魔力,并为您向另一台服务器发出请求。

这是在 php 中实现此目的的链接:http: //developer.yahoo.com/javascript/howto-proxy.html#phpproxy

于 2012-09-25T20:38:32.957 回答