我已经就如何使用帖子file_get_content
进行了一些研究。我也读过this one这是我老实说不明白,因为我不熟悉PHP。下面是我的PHP代码,用于获取我的json,并使用方法GET
将其用于我的ajax请求。:
<?php
echo(file_get_contents("http://localhost:8001/" . $_GET["path"] . "?json=" . urlencode($_GET["json"])));
?>
现在,我正在使用方法POST
,我不知道如何修改我的PHP代码以从我的javascript发布我的数据。以下是我要在我的网址请求中发布的data
(也就是我在方法json
中用作GET
的内容):
{"SessionID":"9SQLF17XcFu0MTdj5n",
"operation":"add",
"transaction_date":"2011-7-28T00:00:00",
"supplier_id":"10000000108",
"wood_specie_id":"1",
"lines": [{"...":"...","..":"..."},{"...":"...","..":"..."}],
"scaled_by":"SCALED BY",
"tallied_by":"TALLIED BY",
"checked_by":"CHECKED BY",
"total_bdft":"23.33",
"final":"N"}
我只需要更改此代码
echo(file_get_contents("http://localhost:8001/" . $_GET["path"] . "?json=" . urlencode($_GET["json"])));
POST
发送我的数据。
修改: 我需要提出这样的请求:
http://localhost/jQueryStudy/RamagalHTML/processjson.php?path=getData/supplier?json={"SessionID":"KozebJ4SFqdqsJtRpG6t1o3uQxgoeLjT"%2C"dataType":"data"}
答案 0 :(得分:2)
您可以将Stream Context作为第三个参数传递给file_get_contents
。使用流上下文,您可以影响HTTP请求的生成方式,例如您可以更改方法,添加内容或arbirtrary标头。
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
)
)
));
在每次请求之后,PHP将自动填充$http_response_header
,其中包含有关请求的所有信息,例如:状态代码和东西。
$data_url = http_build_query (array('json' => $_GET["json"]));
$data_len = strlen ($data_url);
echo file_get_contents("http://localhost:8001/" . $_GET["path"], false, stream_context_create(
array (
'http' => array(
'method'=>'POST',
'header' => "Connection: close\r\nContent-Length: $data_len\r\n",
'content'=>$data_url
)
)
));
答案 1 :(得分:1)
您需要的是cURL。
示例:
$dataString = "firstName=John&lastname=Smith";
$ch = curl_init();
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,2); // number of variables
curl_setopt($ch,CURLOPT_POSTFIELDS,$dataString);
//execute post
$result = curl_exec($ch);
//close connection
curl_close($ch);
答案 2 :(得分:0)
如果我理解正确(我可能不会),你应该使用CURL CURL是在PHP中提交POST请求的方法。 (但这不是唯一的方法) 你正在做的是通过GET方法发送数据
有人认为这样,请仔细阅读,这个开箱即用
<?php
$ch = curl_init("http://localhost:8001/" . $_GET["path"] );
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, "json=".urlencode($_GET["json"]));
curl_exec ($ch);
curl_close ($ch);
?>