【发布时间】:2014-12-10 03:28:07
【问题描述】:
我在尝试使用 $http.put 时遇到错误。这条路线是在 slimPHP 中击中我的 $app->get 块。
这是我的 controller.js 代码,其中 credit 是一个对象:
$http.put('/api/credit_module/credits/'+credit.id, credit).
success(function(data, status, headers, config){
if(data['errors'].length == 0){
console.log(data['results']);
}else{
alert(data['errors']);
}
});
在 slimPHP 代码中,这里是获取单个信用的路径:
$app->get('/credits/:id', function ($id){
include 'DBConnects/credit_module_db.php';
include 'common/response/common_setup.php';
$data = $db->credit("id = ?", $id)->result_array();
if($data){
$result['status_code'] = 200;
}else{
$result['status_code'] = 101;
}
$result['results'] = $data;
$result['errors'] = $errors;
echo json_encode($result,128);
});
这是 put 路线,根本没有被击中:
$app->put('/credits/:id', function ($id) use ($app, $v){
include 'DBConnects/credit_module_db.php';
include 'common/response/common_setup.php';
include 'common/response/put_setup.php';
//Error validation is here
if(sizeof($errors) == 0){
$row = $row->update($bodyArray);
if($row != false){
$result['status_code'] = 200;
}else{
$result['status_code'] = 101;
$errors[] = 'failed to update row';
}
}else{
$result['status_code'] = 101;
}
$result['results'] = $data;
$result['errors'] = $errors;
echo json_encode($result,128);
});
这是请求在 chrome 中的样子:
但是,来自请求的结果数据来自 get 路由而不是 put 路由,因此不会发生更新。
我做错了什么?
编辑:
事实证明,服务器阻止了所有 PUT 和 DELETE 请求。如果您没有 root 访问权限并且遇到奇怪的问题,请咨询您的托管公司。
【问题讨论】: