我正在寻找一个如何使用PHP模拟XMLHttpRequest客户端的示例。
换句话说,通过HTTP POST消息发送请求,并接收并处理回调消息。
答案 0 :(得分:7)
如果您想“真正”模拟AJAX请求,您应该与上述所有解决方案一起考虑发送this header请求:
X-Requested-With: XMLHttpRequest
(查看解决方案的手册如何设置自定义标题)。 Prototype,jQuery,mootools等都是在通过AJAX请求数据时发送这个标题。
答案 1 :(得分:6)
您可以将curl用于此目的
<?php
// create a new cURL resource
$ch = curl_init();
// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// set the post
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,array( 'foo' => 'bar'));
// grab URL and pass it to the browser
$result = curl_exec($ch);
// close cURL resource, and free up system resources
curl_close($ch);
var_dump($result);
答案 2 :(得分:4)
server.php:
<?php var_dump($_POST);
client.html:
<html>
<head>
<title>omg</title>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$.post(
"server.php"
, {omg: "wtf"}
, function (data) { alert(data); }
);
});
</script>
</head>
<body></body>
</html>
编辑:好的,这是用PHP编写的http客户端!
<?php
$r = new HTTPRequest("server.php", HTTP_METH_POST);
$r->addPostFields(array('omg' => 'wtf'));
$r->send();
var_dump($r->getResponseCode());
var_dump($r->getResponseBody());
答案 3 :(得分:3)
最简单的方法是命令行工具curl
,特别是如果您有要发布的数据样本。
答案 4 :(得分:0)
使用jQuery.post()
:http://docs.jquery.com/Post