Backbone/PHPdestroy/DELETE请求错误
Backbone/PHP destroy/DELETE request error
我在服务器端使用 Backbone.js 和 PHP。我的 PHP 版本是 5.3.6,因此支持命名空间。
我可以使模型 .save()
和 .fetch()
请求正常,请求已发送,PHP 处理请求,returns json。
我遇到的问题是尝试执行 .destroy()
请求(我 do 发送了一个 ID)。来自 .destroy()
请求的响应 returns 错误和 responseText
的响应:
<b>Parse error</b>: syntax error, unexpected T_STRING in <b>C:\myfolder\api.php</b> on line <b>9</b><br />
api.php 中的第 9 行只是:namespace App;
(这是我的 PHP 中的第一行)。
就像我说的,.save()
(POST) 和 .fetch()
(GET) 请求有效,该行没有错误,但是 .destroy()
(DELETE) 请求该行出错。
我正在使用 ajaxPrefilter
将 ajax 选项记录到控制台,其中显示:
dataType: "json"
type: "DELETE"
url: "/api/v1/authenticate/10"
所有这些似乎都是正确的。
为什么 RESTful DELETE
请求会出现这样的 PHP 错误,而 RESTful POST
和 GET
却不会要求..?
对,原来我是使用旧版本PHP,具体是5.2.1.4版本。
在 IIS 中,我的站点设置为在 "PHP Manager" 下使用 5.3.6,但是有一个 "Handler Mapping" 将 .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
文件的处理程序映射以确保您使用的是正确的版本,并检查哪些动词在您的处理程序映射中被接受。
我在服务器端使用 Backbone.js 和 PHP。我的 PHP 版本是 5.3.6,因此支持命名空间。
我可以使模型 .save()
和 .fetch()
请求正常,请求已发送,PHP 处理请求,returns json。
我遇到的问题是尝试执行 .destroy()
请求(我 do 发送了一个 ID)。来自 .destroy()
请求的响应 returns 错误和 responseText
的响应:
<b>Parse error</b>: syntax error, unexpected T_STRING in <b>C:\myfolder\api.php</b> on line <b>9</b><br />
api.php 中的第 9 行只是:namespace App;
(这是我的 PHP 中的第一行)。
就像我说的,.save()
(POST) 和 .fetch()
(GET) 请求有效,该行没有错误,但是 .destroy()
(DELETE) 请求该行出错。
我正在使用 ajaxPrefilter
将 ajax 选项记录到控制台,其中显示:
dataType: "json"
type: "DELETE"
url: "/api/v1/authenticate/10"
所有这些似乎都是正确的。
为什么 RESTful DELETE
请求会出现这样的 PHP 错误,而 RESTful POST
和 GET
却不会要求..?
对,原来我是使用旧版本PHP,具体是5.2.1.4版本。
在 IIS 中,我的站点设置为在 "PHP Manager" 下使用 5.3.6,但是有一个 "Handler Mapping" 将 .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
文件的处理程序映射以确保您使用的是正确的版本,并检查哪些动词在您的处理程序映射中被接受。