2016-12-04 2 views
0

У меня есть JS, который отправляет POST-запрос на PHP-контроллер. Код JS выглядит следующим образом:Доступ к объектам JSON в массиве PHP

$.ajax({ 
    url: 'map-controller/coordcontroller.php', 
    data: {myData:JSON.stringify(myArray)}, 
    type: 'post', 
    success: function(output) { 
    console.log(output); 
    } 
}); 

На стороне сервера, $ _POST [ «MyData»] выглядит следующим образом:

[{"lat":36.8867497490586,"lng":-76.3046246767044},{"lat":36.88671756964517,"lng":-76.30381464958191}] 

Как я понимаю, мои данные находятся в одном массиве элемента ($ _POST ["myData"]), содержащий ряд объектов, разделенных запятыми. Я пробовал json_decode(), но у меня есть ощущение, что он не работает, потому что мой объект данных фактически является массивом вместо фактических данных JSON.

Мой вопрос: как я могу получить доступ к каждому объекту в цикле? Или моя реализация ошибочна, и я должен изменить свой Javascript, чтобы отправить данные по-другому?

+0

'json_decode()' будет возвращать другой массив, созданный из объекта json, вы можете просто его перевернуть с помощью 'foreach', есть ли что-нибудь еще в этом вопросе? – georoot

+0

Я использовал эхо вместо var_dump, чтобы проверить успех json_decode(). Я теперь обнаружил, что json_decode() работает так, как ожидалось, и я пытаюсь вывести его неправильно. Спасибо. – FantasticSponge

ответ

0
var_dump (json_decode($_POST["myData"])); 

Результаты в:

array(2) { 
    [0]=> 
    object(stdClass)#1 (2) { 
    ["lat"]=> 
    float(36.886809817261) 
    ["lng"]=> 
    float(-76.304672956467) 
    } 
    [1]=> 
    object(stdClass)#2 (2) { 
    ["lat"]=> 
    float(36.886146919127) 
    ["lng"]=> 
    float(-76.305075287819) 
    } 
} 

Моя ошибка была с помощью эхо вместо var_dump, чтобы проверить декодированного объект.

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