不存储POST数据(json)

时间:2011-04-15 20:32:25

标签: php javascript ajax cross-domain

我有这个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?我的实施是否正确?

谢谢!

2 个答案:

答案 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);

在您开始时查看帖子中的实际内容