Forms 如何使用某种ajax将表单提交到另一台服务器上的页面?
我想将我的表单提交到另一个页面,但不让它进入该页面(比如AJAX,但我知道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
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响应。他的联系会给你带来好处