将表单数据发送到外部表单而不刷新页面

时间:2011-02-17 12:12:33

标签: php jquery ajax

我已经找到了解决方案,但只找到了在我自己的网站上提交表单的方法。我想在这里完成的是两件事。 1:将表单数据从我的网站表单发送到第二个网站上的表单。 2.在不刷新我的网站的情况下这样做。

这是我的表格。它提交正常,但在表单发送后重定向到外部网页。

<form id="widget_contact" action="http://www.website.com/" method="post">
  <input type="text" name="pcode" id="fc_name" />
  <input type="hidden" name="hdnCmd" value="sb-gimme" />
  <input name="send_button" id="fc_submit" class="btn_b" type="submit" value="Gimme" />
</form>

3 个答案:

答案 0 :(得分:0)

您可以做的是设置一个接受表单数据的PHP文件,然后使用HTTP POST将数据发送到其他网站。您可以使用Ajax将数据发送到您自己的PHP文件,以避免刷新。这是一个如何使用PHP将POST数据发送到另一个网站的示例(这只是我刚刚用Google搜索的内容。来源:http://wezfurlong.org/blog/2006/nov/http-post-from-php-without-curl

<?php
function do_post_request($url, $data, $optional_headers = null)
{
  $params = array('http' => array(
              'method' => 'POST',
              'content' => $data
            ));
  if ($optional_headers !== null) {
    $params['http']['header'] = $optional_headers;
  }
  $ctx = stream_context_create($params);
  $fp = @fopen($url, 'rb', false, $ctx);
  if (!$fp) {
    throw new Exception("Problem with $url, $php_errormsg");
  }
  $response = @stream_get_contents($fp);
  if ($response === false) {
    throw new Exception("Problem reading data from $url, $php_errormsg");
  }
  return $response;
}

您也可以使用更简单的cURL,但需要安装cURL。

答案 1 :(得分:0)

我正在处理一个页面,该页面向返回JSON文件的Web服务提交请求。我的请求导致重定向到JSON文件。不是我需要的。使用下面的代码解决了这个问题:

var xmlhttp = new XMLHttpRequest();
<!-- Get Excel Spreadsheet Templates. -->
var url = "https://store.office.com/assets/templates/get?culture=en-CA&sourceIds=TM10000104,TM10000108,TM10000093,TM10000101,TM10000089,TM10000094,TM10000098,TM10000110,TM10000092,TM10000109,TM10000099,TM10000105,TM10000103,TM10000102,TM10000091,TM10000090,TM10000106,TM10000107,TM10000095,TM10000111&format=json";

xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        myFunction(xmlhttp.responseText);
    }
}
xmlhttp.open("GET", url, false);
xmlhttp.send();

function myFunction(response) {
    // Do what you need to do here, if anything!
}

您可以使用提交网址替换网址变量。 GET也可以用POST替换。

结帐:http://www.w3schools.com/ajax/ajax_xmlhttprequest_send.asp。这详细说明了从服务器获取数据和向服务器发布数据。

希望这有帮助。

答案 2 :(得分:0)

以下是我发现的最佳解决方案。获取表单内输入的所有名称,并在请求正文中使用它。

const formEl = document.querySelector('#form_id')
const payload = Array.from(formEl.querySelector('input').map(el => ({[el.name]: el.value}))

fetch(formEl.action, {
            method: formEl.method
            body: JSON.stringify(payload)
        })