Я использую Backbone.js с PHP на стороне сервера. Моя версия PHP 5.3.6 и поэтому поддерживает пространства имен.
Я могу сделать модель .save()
а также .fetch()
запросы в порядке, запросы отправляются, а PHP обрабатывает запросы и возвращает json.
Проблема, которую я имею, пытается сделать .destroy()
запрос (с которым я делать отправить идентификатор). Ответ от .destroy()
запрос возвращает ошибку и responseText
из:
<b>Parse error</b>: syntax error, unexpected T_STRING in <b>C:\myfolder\api.php</b> on line <b>9</b><br />
Строка 9 в api.php просто: namespace App;
(это самая первая строка в моем PHP).
Как я и сказал, .save()
(POST) и .fetch()
(GET) запросы работают, никаких ошибок в этой строке, но .destroy()
(DELETE) запрос делает ошибку в этой строке.
я использую ajaxPrefilter
Записать параметры ajax на консоль, которая показывает:
dataType: "json"type: "DELETE"url: "/api/v1/authenticate/10"
Все из которых кажется правильным.
Почему я могу получить такую ошибку PHP для RESTful DELETE
запрос, а не для RESTful POST
а также GET
Запросы..?
Да, получается, что я было используя более старую версию PHP, а именно версию 5.2.1.4.
В IIS мой сайт был настроен на использование 5.3.6 в разделе «Диспетчер PHP», однако было указано «Отображение обработчика» .php
файлы к 5.2.1.4.
Таким образом, сообщение об ошибке было правильным, моя версия PHP не поддерживала пространства имен.
ОБНОВИТЬ
После дополнительной проверки я теперь лучше понимаю. У меня было две записи сопоставления обработчиков для .php
, Один для 5.3.6 (позволяющий GET
& POST
) и один для 5.2.1.4 (разрешающий все глаголы, включая DELETE
).
Так что мой GET
а также POST
Глаголы были обработаны в 5.3.6, но мой DELETE
обрабатывался 5.2.1.4 — следовательно, ошибка, связанная с пространством имен, но только на DELETE
Запросы.
Итак, урок … При использовании IIS и PHP, проверьте сопоставления обработчиков для .php
файлы, чтобы убедиться, что вы используете правильную версию, а также проверить, какие глаголы принимаются в отображениях вашего обработчика.
Других решений пока нет …