Отправка данных JSON в PHP с помощью jQuery - PullRequest
1 голос
/ 05 декабря 2010

Я пытаюсь написать функцию jQuery для отправки строки запроса в PHP-скрипт, но не могу получить текст, который нужно отправить на сервер в правильном формате.Я хочу отправить эту строку запроса (с соответствующей кодировкой URL):

data={"name":"Chris"}

, где 'data' - это всегда строка JSON.Используя функцию jQuery .ajax, я попытался установить переменную данных на

data: { 'data': {"name":"chris"} },

, но PHP в итоге получает:

data[name]=chris

Как правильно отправить данные обратно на сервер, чтобычто строка JSON зарезервирована правильно, без необходимости вручную ее обрабатывать?

Ответы [ 4 ]

2 голосов
/ 05 декабря 2010

Во-первых, вам нужно будет использовать json2.js , поскольку jQuery не включает в себя возможность вывода JSON, только для его анализа, а метод, который мы будем использовать, не поддерживается в IE 6 / 7. Преобразуйте ваш объект JavaScript в JSON:

var encoded = JSON.stringify(data);

Затем необходимо включить эту строку в формате JSON в качестве данных запроса:

$.getJSON(url, {data: encoded}, function() { ... });

Редактировать: Старая версия этого поста ссылалась на плагин jquery-json, но очевидно, что этот плагин был написан, когда jQuery 1.3.x был текущим.

1 голос
/ 05 декабря 2010

Все, что вам нужно сделать, это поставить кавычки вокруг строки

data: { 'data': '{"name":"chris"}' }
0 голосов
/ 10 апреля 2012

Это неправильно:

data: { 'data': {"name":"chris"} },

Вы получаете индексированный массив с ключом имени и значением chris.

это правильно:

{ name : "chris" } 

Если вы хотите в php:

 name = "chris"; 

Затем вы должны отправить

 { name : "chris" } 

В зависимости от того, еслиВЫ ПОЛУЧАЕТЕ, что можете получить:

$name = $_GET["name"]; 

echo $name; // chris
0 голосов
/ 05 декабря 2010

Хотя, из вашего вопроса неясно, если вы пытаетесь узнать, как правильно обрабатывать строки JSON в PHP, лучшим способом будет использование функций json_encode и json_decode.

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