2012-05-14 5 views
0

Извините за плохой английский :)проводки в формате JSON

Я пытался опубликовать форму в формате JSON для restapi написан в PHP/Python. Я не могу получить доступ к опубликованным данным, если я использую json. См сценарий ниже

Код для не JSON отправлять

jQuery(document).ready(function($) { 
    $.post( 
     "http://localhost:8000/api/v1/entry/?format=json", 
     { 
     "body": "This will prbbly be my lst edited post.", 
     "pub_date": "2011-05-22T00:46:38", 
     "slug": "another-post", 
     "title": "Another Post", 
     "username":"admin", 
     "password":"admin" 


     }, 
     function(responseText){ 
      $("#result").html(responseText); 
     }, 
     "html" 
    ); 
    }) 

ответ сервера

Array 
(
[body] => This will prbbly be my lst edited post. 
[pub_date] => 2011-05-22T00:46:38 
[slug] => another-post 
[title] => Another Post 
[username] => admin 
[password] => admin 
) 

Код для Json сообщение

jQuery(document).ready(function($) { 
    var data = JSON.stringify({ 
    "body": "This will prbbly be my lst edited post.", 
    "pub_date": "2011-05-22T00:46:38", 
    "slug": "another-post", 
    "title": "Another Post", 
"username":"admin", 
"password":"admin" 


}); 

$.post( 
     "testpost.php", 
     data, 
     function(responseText){ 
      $("#result").html(responseText); 
     }, 
     "html" 
    ); 
    }) 

ответ сервера

Array 
(
) 

ответ

3

Ну, вы не присвоили значение любому параметру, поэтому PHP не сможет заполнить массив $_POST.

Назначают его в качестве параметра, например, json:

$.post("testpost.php", {json: data}, ...); 

Тогда вы сможете получить к нему доступ с:

$_POST['json']; 

Или, если вы используете PECL, вы можете позвонить http_get_request_body[docs] в получить данные.

+0

Eval (данные) будет делать? или он просто преобразует json обратно в объект? просто любопытно :) – sumit

+0

В PHP или JavaScript? В PHP используйте 'json_decode', а в JavaScript используйте' JSON.parse'. –

1

это нормальная реакция, данные должны быть массивом/объект ключевых пар значений или правильно кодируются строки запроса что-то так же, как ключ = значение & key2 = значение2 ... Если вы хотите получить отправленные вами, как ДАННЫЕ сделал стороне сервера, вы должны прочитать вход себя что-то вроде этого:

$jsonDatas = file_get_contents('php://input') 

легкий путь вы можете сделать в вашем JS:

data = { json: JSON.stringify({...}) } 

А затем получить результат в $ _POST [ «JSon»] ServerSide ,

Если вы хотите, вы можете проверить класс моих, чтобы помочь вам работать с JSon службы с PHP ServerSide здесь: http://projects.jgotti.net/blog/15

Смежные вопросы