2013-05-18 2 views
0

У меня есть ниже код работает для передачи данных в виде JSON объектаданные JQuery AJAX JSON не посылающие

var jdata = JSON.stringify(grid.serialize()); 
$.ajax({ 
    'type': 'POST', 
    'url': 'print.php', 
    'data': jdata, //assuming you have the JSON library linked. 
    'contentType': "application/json", 
    'success': function (data) { 
     alert(data); 
    }, 
    'error': function (x, y, z) { 
     alert(x.responseText); 
     // x.responseText should have what's wrong 
    } 
}); 
alert(JSON.stringify(grid.serialize())); 

CurrentY предупреждение после того, как функция Аякса отпечатков

[{ "ID":» 1" , "столбец": "1", "строка": "1", "size_y": "1", "size_x": "1"}, { "идентификатор": "2", "столбец":» 2" , "строка": "1", "size_y": "1", "size_x": "1"}]

на приемной странице я использую <?php print_r($_POST) ?>, чтобы увидеть, что страница отправляется и продолжает выдавать

Array 
(
) 

Должно быть, мне не хватает чего-то простого, но не удалось выяснить, что. Возможно, свежий набор глаз увидит простую ошибку, которую я сделал.

+0

Просто быстро догадайтесь ... Я думаю, вы должны написать сообщение в нижнем регистре. В противном случае ... вы пытались использовать '$ .post'? – migg

+0

Вы отправляете '[{" id ":" 1 "," col ":" 1 "," row ":" 1 "," size_y ":" 1 "," size_x ":" 1 "}, {" id ":" 2 "," col ":" 2 "," row ":" 1 "," size_y ":" 1 "," size_x ":" 1 "}]' as is? –

+1

Неважно, если сообщение в верхнем регистре. –

ответ

2

Я думаю, что $_POST заполняется только в том случае, если вы отправляете данные, закодированные как x-www-form-urlencoded. Таким образом, просто присвоить строку JSON к ключу (JQuery ухаживает кодирования это правильно):

'data': {data: jdata} 

и удалить 'contentType': "application/json" часть.

После этого вы получите данные в PHP с:

$data = json_decode($_POST['data'], true); 

В качестве альтернативы, получить сырье тело запроса в PHP и процесс его: How to retrieve Request Payload

+0

Я пробовал этот метод, и он передает массив json, но обратный вызов двойных кавычек. – Somk

+0

Тогда вам, вероятно, следует отключить магические кавычки: http://stackoverflow.com/questions/6642901/php-5-3-automatically-escapes-get -post-из-форм-строк –

0

Если вы отправляете JSON в сервер, на задней панели захватите ваш JSON, используя:

json_decode(file_get_contents('php://input')); 

Его не будет в $ _POST s более глобальный.

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