0

我正在尝试使用一个小的 jquery 脚本更新一个字段,但它一直返回一个错误,我看不到哪里有问题。

我有一个带有 onclick="reportAd(MyAid)" 的锚点,它运行这个:

function reportAd(aid) {
   var conf = confirm("Will you report this ad?");

   if(conf == true) {         
      $.ajax({
         url: rootURL + '/reportad/',
         type: 'PUT',
         dataType: 'json',
         contentType: 'application/json',
         data: {'aid': ''+aid+''},
         success: function(data) {
             alert("Ad have been reported");
         },
         error: function(data) {
             console.log(data);
         }
     });
   }
   return false;
}

哪个应该运行这个:

$app->put('/reportad/', function() use ($app, $adverts) {    
   $request = Slim::getInstance()->request();
   $data = json_decode($request->getBody());

   $adverts->report_ad($data->aid);
});

FireBug 给了我这个:

Object { readyState=4, status=200, statusText="OK"}

如果我用 cURL 调用脚本

curl -i -X PUT -H 'Content-Type: application/json' -d '{"aid":"43"}' http://www.domain.dk/reportad/

有用。

4

2 回答 2

1

您要求将答案的内容解析为 JSON。如果不是 JSON,那么您可能会遇到 parseError。

尝试删除dataType论点。

于 2013-05-21T11:22:10.727 回答
0

克服对“PUT”缺乏支持的标准方法是使用“POST”并引入伪PUT机制,服务器端代码可以在该机制上分支。

例如 :

$.ajax({
    type: 'POST',
    data: {method: 'PUT', 'aid': ''+aid+''},
});

您在服务器端执行的操作取决于您使用的语言/框架。

于 2013-05-21T11:34:25.280 回答