Forms 如何使用某种ajax将表单提交到另一台服务器上的页面?

Forms 如何使用某种ajax将表单提交到另一台服务器上的页面?,forms,jquery,Forms,Jquery,我想将我的表单提交到另一个页面,但不让它进入该页面(比如AJAX,但我知道AJAX不能跨域工作) 你们知道怎么做吗?我不喜欢把它提交到另一个网站的页面上,因为这真的是一种更慢、更糟糕的做事方式 谢谢, Nathan Johnson通过AJAX将表单提交到本地页面。从该页面,您可以使用例如cURL将数据发布到远程站点 下面是一个非常抽象的例子: page\u with_form.php <form id="form1"> //input fields </form> &l

我想将我的表单提交到另一个页面,但不让它进入该页面(比如AJAX,但我知道AJAX不能跨域工作)

你们知道怎么做吗?我不喜欢把它提交到另一个网站的页面上,因为这真的是一种更慢、更糟糕的做事方式

谢谢,

Nathan Johnson通过AJAX将表单提交到本地页面。从该页面,您可以使用例如cURL将数据发布到远程站点

下面是一个非常抽象的例子:

page\u with_form.php

<form id="form1">
//input fields
</form>

<script>
$.post('post_to_remote.php', $('#form1').serialize(), function(){
   //do something when finished
   return false; //prevent from reloading 
});
</script>
  $param1 = $_POST['param1'];
  $param2 = $_POST['param2'];

  $remoteUrl = 'http://www.remote_site.com/page_to_post_to.php';
  $postFields = array('param1' => $param1, 'param2' => $param2);
  //if you don't want to do any sanitizing, you can also simply do this:
  //$postFields = $_POST;

  $data_from_remote_page = $getUrl($remoteUrl, 'post', $postFileds);

  function getUrl($url, $method='', $vars='') {
    $ch = curl_init();
    if ($method == 'post') {
      curl_setopt($ch, CURLOPT_POST, 1);
      curl_setopt($ch, CURLOPT_POSTFIELDS, $vars);
    }
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies.txt');
    curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies.txt');
    $buffer = curl_exec($ch);
    curl_close($ch);
    return $buffer;
  }
如果您不需要curl的全部功能,而且它实际上只是一篇简单的文章,那么您也可以使用本机PHP函数:

$postFields = http_build_query($_POST);
$remoteUrl = 'http://www.remote_site.com/page_to_post_to.php';

$context = stream_context_create(
          array(
            'http' => array(
              'method' => 'POST',
              'header' => "Content-type: application/x-www-form-urlencoded\r\n",
              'content' => $postFields,
              'timeout' => 10,
            ),
          )
);

$result = file_get_contents($remoteURL, false, $context);

这是一个不同的基本示例,但您了解了它的意思。

通过AJAX将表单提交到本地页面。从该页面,您可以使用例如cURL将数据发布到远程站点

下面是一个非常抽象的例子:

page\u with_form.php

<form id="form1">
//input fields
</form>

<script>
$.post('post_to_remote.php', $('#form1').serialize(), function(){
   //do something when finished
   return false; //prevent from reloading 
});
</script>
  $param1 = $_POST['param1'];
  $param2 = $_POST['param2'];

  $remoteUrl = 'http://www.remote_site.com/page_to_post_to.php';
  $postFields = array('param1' => $param1, 'param2' => $param2);
  //if you don't want to do any sanitizing, you can also simply do this:
  //$postFields = $_POST;

  $data_from_remote_page = $getUrl($remoteUrl, 'post', $postFileds);

  function getUrl($url, $method='', $vars='') {
    $ch = curl_init();
    if ($method == 'post') {
      curl_setopt($ch, CURLOPT_POST, 1);
      curl_setopt($ch, CURLOPT_POSTFIELDS, $vars);
    }
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies.txt');
    curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies.txt');
    $buffer = curl_exec($ch);
    curl_close($ch);
    return $buffer;
  }
如果您不需要curl的全部功能,而且它实际上只是一篇简单的文章,那么您也可以使用本机PHP函数:

$postFields = http_build_query($_POST);
$remoteUrl = 'http://www.remote_site.com/page_to_post_to.php';

$context = stream_context_create(
          array(
            'http' => array(
              'method' => 'POST',
              'header' => "Content-type: application/x-www-form-urlencoded\r\n",
              'content' => $postFields,
              'timeout' => 10,
            ),
          )
);

$result = file_get_contents($remoteURL, false, $context);

这是一个不同的基本示例,但您了解了它的意思。

您可以尝试使用JSONP:

它可以跨域使用,但从服务器发送回来的数据必须类似(PHP):

当我第一次使用它时,我没有回显回调函数的名称,我花了几个小时才明白它为什么不起作用


祝你好运

您可以尝试使用JSONP:

它可以跨域使用,但从服务器发送回来的数据必须类似(PHP):

当我第一次使用它时,我没有回显回调函数的名称,我花了几个小时才明白它为什么不起作用


祝你好运

试试javascript中的jsonp:

     $.ajax({
                        url: 'some_url' ,
                        data: $('#form_id').serialize(),
                        dataType: "jsonp",
                        jsonp : "callback",
                        jsonpCallback: "jsonpcallbask"
                    });

function jsonpcallbask(data) {
   //handle response here
}

在javascript中尝试jsonp:

     $.ajax({
                        url: 'some_url' ,
                        data: $('#form_id').serialize(),
                        dataType: "jsonp",
                        jsonp : "callback",
                        jsonpCallback: "jsonpcallbask"
                    });

function jsonpcallbask(data) {
   //handle response here
}


如果OP需要实际使用响应,则远程服务器必须支持JSONP。我有种感觉,它不会认为我不知道,谢谢你的回复。Quasdunk的版本要好得多。谢谢你的回答,但不幸的是,正如Phil所说,表单提交到的服务器不支持JSONP。我不得不接受@Quasdunk的答案,但我不知道如何使用它,因为我对PHP还不是很有经验。如果OP需要实际使用响应,远程服务器必须支持JSONP。我有种感觉,它不会认为我不知道,谢谢你的回复。Quasdunk的版本要好得多。谢谢你的回答,但不幸的是,正如Phil所说,表单提交到的服务器不支持JSONP。我将不得不接受@Quasdunk的答案,但我不知道如何使用它,因为我对PHP还不是很有经验。谢谢你,但我之所以提交到另一个页面,首先是因为我构建网站的东西不支持PHP。如果是这样的话,我只需要提交一个带有AJAX的本地页面,这会容易得多。现在有IDE吗?@Nathan抱歉,我是从php标签上猜出来的!那么你的网站是建立在什么基础上的呢?cURL库几乎适用于所有编程语言。我只是使用www.Yola.com,因为我在构建网站时很懒,我不想用所有自定义HTML/CSS/JS构建它。我可能永远都不应该把PHP标签放进去,哎呀。(很抱歉)Yola现在不支持PHP,它只是一个网站构建器,但我在网站构建器中使用了很多自定义HTML小部件,我只使用了构建器,所以我不需要设计布局和所有这些。也许我应该把表格交给一个隐藏的iframe或什么的?@Nathan我现在很困惑。。。Yola只是一个网站建设者,但这并不意味着你的服务器不支持php,因为它可能支持php。嗯,Yola是主机和网站建设者。它为我做了所有的工作。它现在不允许PHP处理安全问题。服务器有PHP,但无法上传到Yola上,因为他们已经为用户禁用了它,而构建器使用PHP用我们在站点构建器中构建的内容填充页面。(这就是为什么页面以.php结尾,但我们不能在上面使用php的原因)希望这能帮助您了解更多,您是否仍然感到困惑?谢谢,但我之所以提交到另一个页面,首先是因为我构建网站的基础不支持php。如果是这样的话,我只需要提交一个带有AJAX的本地页面,这会容易得多。现在有IDE吗?@Nathan抱歉,我是从php标签上猜出来的!那么你的网站是建立在什么基础上的呢?cURL库几乎适用于所有编程语言。我只是使用www.Yola.com,因为我在构建网站时很懒,我不想用所有自定义HTML/CSS/JS构建它。我可能永远都不应该把PHP标签放进去,哎呀。(很抱歉)Yola现在不支持PHP,它只是一个网站构建器,但我在网站构建器中使用了很多自定义HTML小部件,我只使用了构建器,所以我不需要设计布局和所有这些。也许我应该把表格交给一个隐藏的iframe或什么的?@Nathan我现在很困惑。。。Yola只是一个网站建设者,但这并不意味着你的服务器不支持php,因为它可能支持php。嗯,Yola是主机和网站建设者。它为我做了所有的工作。它现在不允许PHP处理安全问题。服务器有PHP,但无法上传到Yola上,因为他们已经为用户禁用了它,而构建器使用PHP用我们在站点构建器中构建的内容填充页面。(这就是为什么页面以.php结尾,但我们不能在上面使用php的原因)希望这能帮助您理解更多,您是否仍然感到困惑?jsonp旨在用于跨域互操作。同时检查@Adi Ulici响应。他的链接将为您提供更多信息,非常有用。jsonp旨在用于跨域互操作。同时检查@Adi Ulici响应。他的联系会给你带来好处