Php 如何跨域发送并获得响应

Php 如何跨域发送并获得响应,php,jquery,ajax,cross-domain,Php,Jquery,Ajax,Cross Domain,我想设置的形式,我可以发送一些信息到另一个域跨域和得到回应回来 假设我有以下数据库表信息 --------------------- | ID | Name | Age | --------------------- | 12 | Dave | 18 | --------------------- | 34 | Eva | 17 | --------------------- | 31 | Carry | 19 | --------------------- 我想设置的形

我想设置的形式,我可以发送一些信息到另一个域跨域和得到回应回来

假设我有以下数据库表信息

---------------------
| ID |  Name  | Age |
---------------------
| 12 |  Dave  | 18  |
---------------------
| 34 |  Eva   | 17  |
---------------------
| 31 | Carry  | 19  |
---------------------
我想设置的形式,我可以发送一些信息到另一个域跨域和得到回应回来

我已经搜索了很多教程,但都没有完整的例子来学习,所以这个例子将帮助我很多

假设我有以下数据库表信息

---------------------
| ID |  Name  | Age |
---------------------
| 12 |  Dave  | 18  |
---------------------
| 34 |  Eva   | 17  |
---------------------
| 31 | Carry  | 19  |
---------------------
现在,www.site_1.com上的HTML页面index.HTML和此表单将跨域发送到http://www.site_2.com/data.php

如果您的www.site_1.com是localhost,则代码可以工作。如果id为1,您将得到纯文本响应1。如果你有很多数据要返回 您可以在服务器中使用json_encode将其编码为json,并在客户端使用json.parse对其进行解码。使用echo发回数据是可以的。你所呼应的一切都会在反应体中

如果你的机器不工作,我可以考虑一些原因

$。ajax部分有一些问题。我只使用不同的客户端代码测试了服务器部分。 您的服务器在数据库操作中遇到一些问题。 您的客户机代码不在localhost域中,因此永远不会执行set header中允许CORS的部分,并且您将在控制台中看到类似于无法加载XMLHttpRequest的错误http://www.site_2.com/info.php. 请求的资源上不存在“Access Control Allow Origin”标头。起源'http://www.site_1.com因此,不允许访问。
<?PHP
// Suppose it already connected to DB

// for cross-domain
switch ($_SERVER['HTTP_ORIGIN']) {
    case 'http://localhost': case 'https://localhost':
    header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN']);
    header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');
    header('Access-Control-Max-Age: 1000');
    header('Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-With');
    break;
}

// getting sent informations
$name = $_POST['name'];
$age = $_POST['age'];

// do some query
$a1 = "select id from info where name = '$name'";
$query = mysql_query($a1) or die(mysql_error());
$get = mysql_fetch_array($query);

// get the id
$id = $get['id'];

// i want it to send it back
echo $id;
?>