Я стесняюсь спрашивать, так как есть множество других сообщений по этой теме (например, один и два ), но ни одно из решений в этих сообщениях, похоже, не применяется ко мне.
Я пытаюсь передать JSON-кодированный объект со страницы на PHP-контроллер, а затем ответить на некоторую информацию.
Если я смотрю в Firebug, я вижу, что объект отправляется на вкладке «Опубликовать», однако, когда я печатаю массивы $ _GET, $ _POST и $ _REQUEST, я ничего не вижу в отношении объекта json. Массив $ _GET по крайней мере показывает мой запрос «update-player», однако POST пуст, и REQUEST показывает только некоторые локальные файлы cookie, которые у меня есть.
Вот мой код jQuery. Как вы можете видеть, я жестко кодирую JSON на данный момент, и я намерен, что у меня будет метод jQuery, обновляющий локальный объект.
function sendPlayerUpdate(row, col) { var playerinfo = [ { "id": 1, "row": row, "col": col } ]; alert(playerinfo[0].id); //debugging $.ajax({ type: 'POST', url:"controller.php?a=update-player", //data: $.toJSON(playerinfo[0], data: { json: JSON.stringify(playerinfo) }, contentType: "application/json", success: function (){ }, dataType: 'json' }); };
Мой соответствующий PHP-код обрабатывает запрос:
// update player information from AJAX POST case "update-player": if (isset($_POST['json'])) echo "json received\n\n"; else echo "json not received\n\n"; echo "GET VARIABLES\n"; print_r($_GET); echo "\n\nPOST VARIABLES\n"; print_r($_POST); echo "\n\nREQUEST VARIABLES\n"; print_r($_REQUEST);
И что я вижу в Firebug:
json не получен
GET VARIABLES Array ( [a] => update-player ) POST VARIABLES Array ( ) REQUEST VARIABLES Array ( [a] => update-player (local cookies) )
Попробуйте на PHP, как показано ниже (когда запрос является приложением / json, то вы не получите данные в $ _POST)
var_dump(json_decode(file_get_contents("php://input")));
Попробуйте это Может быть, это сработает для вас
$.ajax({ type: 'POST', url:"controller.php?a=update-player", data: data_json=JSON.stringify(playerinfo), success: function (data){ }, });