Не хранить данные POST (JSON) - PullRequest
0 голосов
/ 16 апреля 2011

У меня есть этот бит 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 изображения.

Я что-то здесь упускаю?Я ничего не получаю в ответ, и кажется, что мои данные даже не публикуются (когда я пытаюсь повторить $ json после первой строки в proxy.php, я получаю пустую строку).Почему я не могу повторить JSON?Правильна ли моя реализация?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 16 апреля 2011

В вашем коде 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 голосов
/ 16 апреля 2011

попробуйте это:

$json = $_POST['data'];

или, что еще лучше, сделайте

var_dump($_POST);

, чтобы увидеть, что на самом деле находится в вашем посте, когда вы начинаете

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...