2011-04-15 137 views
0

我有这样的一些JavaScript:不存储POST数据(JSON)

 
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

在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); 
+0

ooooo我so sooo close – Neal 2011-04-15 20:36:12

+0

我比你更快32秒? ;-)地狱^^ – 2011-04-15 20:37:07

+0

是的!我现在正确地获取数据。另一个快速问题,我是否正确地将JSON数据picid附加到URL的末尾? – 2011-04-15 20:39:57

0

试试这个:

$json = $_POST['data']; 

甚至做得更好

var_dump($_POST); 

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

+0

非常感谢你! – 2011-04-15 20:41:10