在PHP中模拟jQuery.ajax请求

我必须在PHP中模拟AJAX请求,就像在jQuery中一样。 我目前的代码在这里:

原始AJAX调用 (不得修改)

$.ajax({ type: "POST", url: "/someFile.php", data: data, success: function(response) { some_code_here; }, error: function() { some_code_here; } }); 

当前的PHP代码 – 尝试模拟上面的JS代码行为

 function _misc_test() { $data = json_decode("xxx"); // The "xxx" is placeholder for the same string, as is in data var in JS above $ajaxResponse = _make_post_request('/someFile.php', $data); print_r($ajaxResponse); } function _make_post_request($url, $data) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_POST, TRUE); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); curl_close($ch); return $response; } 

不幸的是,PHP代码似乎没有像JS代码那样生成完全相同的数据包 – 这就是我所需要的。 有人可以帮我一把吗?


编辑:也许重要的是,JS中的data变量包含复杂的JS对象,如下所示:

 {"options":{"userIP":"89.102.122.16","playerType":"flash","playlistItems":[{"Type":"Archive","Format":"MP4_Web","Identifier":"209 452 80139\/0042","Title":"Nezn\u00e1m\u00ed hrdinov\u00e9","Region":"","SubtitlesUrl":"http:\/\/img2.ceskatelevize.cz\/ivysilani\/subtitles\/209\/209452801390042\/subtitles-1.txt","Indexes":null,"Gemius":{"Param":[{"Name":"materialIdentifier","Value":"209 452 80139\/0042"},{"Name":"testParam","Value":"testValue"}]}}],"previewImageURL":null}} 

在js:data:$(’form’)。serialize();

在php中: 如何使用file_get_contents在PHP中发布数据?

 $jsonstr = '{"options":{"userIP":"89.102.122.16","playerType":"flash","playlistItems":[{"Type":"Archive","Format":"MP4_Web","Identifier":"209 452 80139\/0042","Title":"Nezn\u00e1m\u00ed hrdinov\u00e9","Region":"","SubtitlesUrl":"http:\/\/img2.ceskatelevize.cz\/ivysilani\/subtitles\/209\/209452801390042\/subtitles-1.txt","Indexes":null,"Gemius":{"Param":[{"Name":"materialIdentifier","Value":"209 452 80139\/0042"},{"Name":"testParam","Value":"testValue"}]}}],"previewImageURL":null}}'; print_r( $data = json_decode($jsonstr ,true) ); $data_url = http_build_query ($data); $data_url = str_replace("amp;","",$data_url); //fix for & to & $data_len = strlen ($data_url); $url = 'http://domain.com/returnPost.php'; $result = file_get_contents ($url, false, stream_context_create ( array ('http'=> array ('method'=>'POST' , 'header'=>"Connection: close\r\nContent-Length: $data_len\r\n" , 'content'=>$data_url )) ) ); print_r( $result ); 

在returnPost.php中

 print_r($_POST);