У меня есть запрос JQuery AJAX, отсылающий некоторые данные JSON в PHP-скрипт, однако, когда дело доходит до манипулирования данными или даже пытается получить к нему доступ, оно ведет себя как но мне нужно, чтобы он вел себя как ассоциативный массив.JSON в PHP некорректно отформатирован из запроса JQuery Ajax
JavaScript
var all_data = [];
$.each($("[id*=card]"), function(i, value) {
var name_a = $(value).find('#story_name_div').text();
var text_a = $(value).find('#story_text_div').text();
var point_a = $(value).find('#story_point_div').text();
var phase_a = $(value).find('#story_phase').val();
var date_a = $(value).find('#story_date').val();
var author_a = $(value).find('#username_div').text();
var story_data = {
"name": name_a ,
"text": text_a ,
"point": point_a ,
"data": phase_a ,
"date": date_a ,
"author": author_a
};
all_data.push(story_data);
});
$.ajax({
url: 'save_server_script.php',
type: 'POST',
processData:false,
dataType: "json",
data: "json=" + JSON.stringify(all_data),
success: function(res){
var json_a = $.parseJSON(res);
console.log(json_a);
},
error: function(err){
console.log("error");
}
});
JSON, который создается
[json] => [{"name":"jhb","text":"gjh","point":"jhv","phase":"planning","date":"21/9/2013 - 4:23:16","author":"Created by - ljhlkjhb"}]
PHP
print_r($_POST); // prints out entire JSON
print($_POST["json"][0]["story_name"]);
// Warning : Illegal string offset 'story_name' in C:\xampp\htdocs\save_server_script.php on line 15
print($_POST["json"][0]); // prints out a '['
foreach($_POST["json"] as $hello) { // invalid argument supplied for foreach
print $hello["story_name"];
}
Я также пробовал декодирование через PHP, но безрезультатно.
Где ваш вопрос? – BlitZ
Извинения. Мне нужно, чтобы JSON управлялся как массив в PHP, например $ _POST ["json"] [0] ["story_name"] или что-то в этом роде, поскольку мне нужно будет пропустить JSON, если есть больше данных , – TheSunny
_ «он ведет себя как строка» _ - Это потому, что JSON по определению является строкой. Чтобы использовать его в своем PHP, вам нужно сделать то, что сказал Майк У. Обратите внимание, однако, что если ваш PHP возвращает JSON в своем ответе, вам не нужно использовать '$ .parseJSON()' в вашем обработчике успеха ajax, потому что, когда вы укажете 'dataType:" json ", jQuery автоматически проанализирует его для вас. – nnnnnn