我在Ajax/Jquery中有這段代碼,我試圖向我的API請求一個PUT方法。在我的代碼中,我試圖發送已在我的文本字段中更新的數據。這些數據應該由API接收,並將其發送給Model,它應該用來根據已收到的ID更新數據庫中的記錄。出於某種原因,控制器中的REST API未從我的文本字段接收值。Rest Api PUT方法沒有收到值
代碼我在哪裏發送數據:
$("#edit").on("click", function() {
var updatedData ={ question: $('#questionField').val(),
image: $('#imageField').val(),
answer1: $('#answer1Field').val(),
answer2: $('#answer2Field').val(),
answer3: $('#answer3Field').val(),
answer4: $('#answer4Field').val(),
};
$.ajax({
url : '../admincontroller/getdatabasedata/',
type: 'PUT',
dataType: 'json',
data: updatedData,
success: function(updatedQuestion)
{
JSON.stringify(updatedQuestion);
if(updatedQuestion.ok == 1) {
alert("Succesfully edited");
}
else{
alert(updatedQuestion.ok);
}
}
});
return false;
});
代碼爲我的REST API,其中數據應該被接收:
else if ($this->input->server('REQUEST_METHOD') == 'PUT')
{
$id = $this->input->post('idField');
$question = $this->input->post('questionField');
$image = $this->input->post('imageField');
$answer1 = $this->input->post('answer1Field');
$answer2 = $this->input->post('answer2Field');
$answer3 = $this->input->post('answer3Field');
$answer4 = $this->input->post('answer4Field');
if($question != '' && $image != '' && $answer1 != '' && $answer2 != '' && $answer3 != '' && $answer4 != ''){
$this->adminmodel->updateQuestion($id,$question,$image,$answer1,$answer2,$answer3,$answer4);
echo json_encode(array('ok' => 1));
}
else{
echo json_encode(array('ok' => $question));
}
}
此刻我想提醒,看看數據已通過,但我只是得到NULL。任何想法爲什麼?謝謝。
我知道那不是你所要求的,但是如果你想要創建一個REST API,你似乎會走向一個錯誤的方向。你不應該使用「PUT」,而更可能使用「POST」,因爲你不想創建或更新一個實體到它的URI,應該使用什麼PUT! PUT也具有冪等性,你的行爲似乎不是。此外,URI「getdatabasedata」根本不是RESTful。 URI中不應該有動詞。在REST中,動詞是可以放在任何實體或它各自的URI上的HTTP方法,所以URI應該是「/ databasedata /」。見例如http://www.restapitutorial.com – Robert