2013-05-21 70 views
0

我想用小jquery腳本更新一個字段,但它不斷返回一個錯誤,我看不到我有問題。與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); 
}); 

螢火給我:

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/ 

它的工作原理。

+0

rootURL是否在同一個域中?你的瀏覽器是什麼? –

+0

rootURL在同一個域中,是的。 FF和Chrome都給我提供了同樣的錯誤。 –

+0

服務器返回什麼?它有效的JSON? –

回答

1

您要求將解析的內容解析爲JSON。如果它不是JSON,那麼你可能遇到了一個parseError。

嘗試刪除dataType參數。

+0

刪除dataType將返回成功,但不運行我的腳本。 –

+0

不得不JSON.stringify「數據」。然後它工作。 –

0

克服對「PUT」缺乏支持的標準方法是使用「POST」並引入服務器端代碼可以在其上分支的僞PUT機制。

例如:

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

究竟你做什麼,服務器端取決於你所使用的語言/框架。

+0

現代瀏覽器不支持XmlHttpRequest中的PUT方法嗎? –

+0

據我所知,支持仍然是不完整的,至少這是我上次檢查。 –