我正在尝试使用JQuery发送删除请求,但我一直收到500内部服务器错误。我用来发送请求的代码是:
$('#deleteReview').click(function(event, ui){
var id = $('#editReviewId').val();
$.ajax({
type: 'DELETE',
url: 'http://api.domain.com/v1/reviews/' + id,
data: 'delete=1' + accessTokens,
dataType: 'json',
success: function(data) {
...
},
error: function(data) {
...
}
});
return false;
});
虽然我在使用Postman(Chrome HTTP客户端扩展)时以及使用完全相同的AJAX函数发送GET或POST时得到200 OK响应。它只是PUT和DELETE不起作用。我已经在最新的Chrome和Firefox以及Android手机上进行了测试,因此不要认为浏览器存在问题。任何人都可以指导我解决代码可能出错的问题吗?
由于
修改
请求和响应标头:
Request URL:http://api.domain.com/v1/reviews/11
Request Method:OPTIONS
Status Code:500 Internal Server Error
Request Headers
Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-GB,en-US;q=0.8,en;q=0.6
Access-Control-Request-Headers:accept
Access-Control-Request-Method:DELETE
Connection:keep-alive
Host:api.domain.com
Origin:http://client.domain.dev
Referer:http://client.domain.dev/v4/
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.68 Safari/537.36
**Response Headers**
Access-Control-Allow-Methods:*
Access-Control-Allow-Origin:*
Connection:close
Content-Type:text/html
Date:Sun, 12 Jan 2014 01:34:28 GMT
Server:Apache
Set-Cookie:laravel_session=4dd2062c4e6837c605c7b0b7e21d417c; expires=Sun, 12-Jan-2014 03:34:28 GMT; path=/; HttpOnly
Transfer-Encoding:chunked
控制器代码:
当我尝试调试时,控制器只是:
class ReviewController extends \BaseController {
public function destroy($id)
{
dd('delete');
}
}
dd()是Laravel函数的执行或死亡。
答案 0 :(得分:3)
这绝对是服务器问题。
我不知道你在使用什么服务器,但这是我如何处理节点中的OPTIONS:
var allowCrossDomain = function(req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, api_token, user_token');
if ('OPTIONS' == req.method) {
res.send(200);
} else {
next();
}
};