我已閱讀所有關於同一問題的SO帖子,並嘗試過所有。顯然還有一些我做錯了。我可以將所有數據註銷到控制器。發佈數據總是空的,我不知道爲什麼。爲什麼發佈的數據完全爲空通過ajax發佈到CodeIgniter控制器?
jQuery的
function onDeleteThing(myId, callback) {
console.log(myId) // 10
$.ajax({
'type': 'post',
'contentType': 'application/json',
'cache': false,
'data': {'id': myId},
'url': '/my-url/delete',
'dataType': 'json',
'timeout': 50000
}).done(function (response) {
callback(response);
}).fail(function (error) {
// Total fail.
});
}
控制器
public function delete()
{
if ($this->input->is_ajax_request()) {
error_log(print_r($this->input->post(), true)); // returns: Array()
// even using $_POST returns empty array
// here is an example of how I plan to send the post data to my model
if ($this->My_model->delete($this->input->post('data')) {
echo json_encode(array('status' => 'success'));
} else {
echo json_encode(array('status' => 'fail'));
}
}
}
但儘管如此,我遇到的問題是,$this->input->post('data')
空當它到達我的控制器。
編輯
我也可以看到網絡選項卡:
Request Payload
id=10
您的Ajax期待json響應,如果服務器沒有響應json和有效的json響應,響應將只是空的。你確定你的函數返回有效的json嗎?我不知道它在哪裏 – DelightedD0D
嗨@ DelightedD0D,你是對的,我沒有回報任何東西......但是。由於某些原因,我無法訪問發送給我的控制器的發佈數據。在這一點上,我沒有數據發送到模型發送響應回我的控制器。在一個典型的表單中,我會使用'myform.serialize()'作爲數據屬性,一切都很好。在這種情況下,我不確定我在哪裏丟球。 – Damon
@Stryner SO現在很重要。就是這樣。我需要將其更改爲「contentType」:'application/x-www-form-urlencoded; charset = UTF-8'',一切都很好。感謝您的時間!如果您將其作爲答案發布,我會將其作爲解決方案進行檢查。 – Damon