我有这个javascript:
var jsonString = "some string of json"; $.post('proxy.php', { data : jsonString }, function(response) { var print = response; alert(print);
和PHP的这一点(在proxy.php中):
$json = $_POST['json']; //set POST variables, THIS IS WHERE I WANT TO POST TO! $url = 'http://my.site.com/post'; //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, 1); curl_setopt($ch,CURLOPT_POSTFIELDS, "data=" . urlencode($json)); //execute post (the result will be something like {"result":1,"error":"","pic":"43248234af832048","code":"234920348239048"}) $result = curl_exec($ch); $response = json_decode($result); $imageHref = 'http://my.site.com/render?picid=' . $response['picid']; //close connection curl_close($ch); echo $imageHref;
我正在尝试使用代理将数据发布到外部网站。从那里,我附加网站响应的picid并将其附加到URL以获取图像URL。
我在这里遗漏了什么吗?我没有得到任何响应,似乎我的数据甚至没有被发布(当我在proxy.php的第一行之后尝试echo $ json时,我得到一个空字符串)。为什么我无法回应JSON?我的实施是否正确?
谢谢!
答案 0 :(得分:2)
在您的Javascript代码中,您使用的是:
{ data : jsonString }
那么,从您的PHP代码开始,您是否应该从$_POST['data']
而不是$_POST['json']
阅读?
如有必要,您可以使用var_dump()
查看$_POST
中的内容:
var_dump($_POST);
在评论后进行编辑:如果您收到如下的JSON结果:
{"result":1,"error":"","pic":"43248234af832048","code":"234920348239048"}
这是一个JSON对象 - 这意味着,在解码之后,你应该将它作为PHP中的对象访问:
$response = json_decode($result);
echo $response->pic;
注意:我没有在该对象中看到picid
元素 - 也许您应该使用pic?
不过,您也可以使用var_dump()
来查看数据的外观:
var_dump($response);
答案 1 :(得分:0)
试试这个:
$json = $_POST['data'];
甚至更好
var_dump($_POST);
在您开始时查看帖子中的实际内容