0

通过异步 HTTP 请求,我可以使用现有服务从/向数据库加载/保存一些信息。但是至少据我所知,这些请求(AJAX)只能从客户端(例如 JavaScript 脚本)完成。

例如使用 jQuery ajax方法:

$.ajax({ 
    type: "POST", 
    url: someurl,
    dataType: 'xml',
    data: xmlString, 
    success: function(data) { 
        // some code here 
    }
});

如何从 PHP 脚本中使用相同的服务?也就是说,如何使用 POST 或 GET 方法“从 PHP 进行 AJAX 调用”?

4

2 回答 2

2

您可以使用 cURL 库来访问相同的 URL。

如果接收服务检查,您可能需要将“X-Requested-With”标头设置为“XMLHttpRequest”。

否则,请按照此答案进行操作,但您将使用 POST 注释字段。

这个答案建议如何调试和反向工程现有的 AJAX 服务。然后,您将能够使用例如 SimpleXML 来解码答案,从您发布的 jQuery 代码中,答案将以 XML 格式得到。

一个测试。

$url = 'http://your-url';
$fields = array(
    'key' => 'value',
    // other fields
);
$headers = array(
    'X-Requested-With: XMLHttpRequest',
);

$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

// Note that you might have to set CURLOPT_POSTFIELDS to a urlification of
// $fields instead of an array, in case the service distinguishes form-data
// from url encoding.
curl_setopt($ch, CURLOPT_POST, True);
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields);

// IMPORTANT: some AJAX services will expect inbound data to be coming JSON encoded, so if that is the case, you shall have to write instead
// curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));

$xml = curl_exec($ch);
curl_close($ch);

$xml = simplexml_load_string($xml);

print_r($xml);
于 2012-10-11T20:39:07.803 回答
1

PHP 中的 AJAX 是不可能的,但如果您正在谈论对外部站点执行 GET 和 POST,您将需要 libcurl

http://php.net/manual/en/book.curl.php

里面有很多例子;)

于 2012-10-11T20:36:27.320 回答