Не удается получить конкретный индекс $ _POST

1

В моем коде я выполняю запрос ajax и отправляю это содержимое:

Object {appointment_data: "{"id_services":["13","13"],"id_users_provider":"86…lable":false,"id":"133","id_users_customer":"87"}", customer_data: "{"first_name":"Mario","last_name":"Rossi","email":…:"","city":"","zip_code":"","notes":"","id":"87"}"}
appointment_data: "{"id_services":["13","13"],"id_users_provider":"86","start_datetime":"2015-11-19 13:43:00","end_datetime":"2015-11-19 14:55:00","notes":"","is_unavailable":false,"id":"133","id_users_customer":"87"}"
customer_data: "{"first_name":"Mario","last_name":"Rossi","email":"[email protected]","phone_number":"0000","address":"","city":"","zip_code":"","notes":"","id":"87"}"

NB: этот контент включен в переменную appointment которую json кодирует:

JSON.stringify(appointment);

Теперь с php-стороны внутри вызываемой функции я пытаюсь получить id встречи таким образом:

$_POST['appointment_data']['id'];

но я получаю эту ошибку:

Недопустимое смещение строки 'id'

Я также пробовал с .id но то же самое.

NB: если я выполняю gettype() я получаю строку в $_POST['appointment_data'] gettype() $_POST['appointment_data'] возможно, это проблема? Как я могу это исправить?

VAR DUMP PRINT

array(2) { ["appointment_data"]=> string(216) "{"id_services":["13","15","14"],"id_users_provider":"86","start_datetime":"2015-11-19 09:45:00","end_datetime":"2015-11-19 10:57:00","notes":"Appuntamento ","is_unavailable":false,"id":"131","id_users_customer":"87"}" ["customer_data"]=> string(146) "{"first_name":"Mario","last_name":"Rossi","email":"[email protected]","phone_number":"0000","address":"","city":"","zip_code":"","notes":"","id":"87"}" } 
  • 0
    Попробуйте сделать $_POST['appointment_data']->id; (Сомневаюсь, что это сработает, но оно того стоит!)
  • 0
    Вам не нужно анализировать / декодировать это?
Показать ещё 4 комментария
Теги:

1 ответ

3
Лучший ответ

PHP не будет автоматически преобразовывать вашу строку JSON в объект. Комбинация HTTP POST и PHP просто не интуитивно понятна и, вероятно, не должна пытаться быть. Ваш главный ключ к проблеме - ваше выражение здесь:

если я выполняю gettype() я получаю строку в $_POST['appointment_data'] gettype() $_POST['appointment_data']

В этом случае это строка, а строка не имеет индекса id. Если вы хотите преобразовать эту строку JSON в объект, PHP предоставляет способ сделать это:

$myObj = json_decode($_POST['appointment_data']);

В этот момент вы должны найти нужное значение:

$myObj->{'id'}
  • 0
    Это работает хорошо, спасибо человек. Хорошего дня :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню