Windows 10,Codeigniter 3,Wamp3。'Bad Request'with ajax and codeigniter
Ajax post引發錯誤的請求錯誤。這是一個古老的栗子,但在線研究表明這個問題通常是CSRF。但是我要強調的是我已經CSRF禁用此測試開始:
config['csrf_protection'] = FALSE;
我已經設置了一些故意非常簡單的測試代碼。控制器看起來是這樣的:
class Ajax extends CI_Controller {
public function index() {
$this->load->view('pages/index');
}
public function hello($name) {
$fullname = $this->input->post('fullname');
echo 'Hello '.$fullname;
}
}//EOF
和觀點如下:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Demo Ajax</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script>
$(function() {
$('#bttHello').click(function(){
var fullname = $('#fullname').val();
$.ajax({
type:'POST',
data: {fullname: fullname},
url:'<?php echo base_url('ajax/hello'); ?> + fullname',
success: function(result) {
$('#result1').html(result);
}
});
});
});
</script>
</head>
<body>
Name <input type="text" id="fullname">
<input type="button" value="Hello" id="bttHello">
<br>
<span id="result1"></span>
</body>
</html>
控制檯顯示一個錯誤的請求
POST XHR http://localhost/faith/ajax/hello%20+%20fullname [HTTP/1.1 400 Bad Request 9ms]
所以,如果CSRF是不是罪魁禍首,是它一個Wamp的問題?其他一切似乎都很好。我花了這麼多時間在這個上! 這是怎麼回事? /fullname
後
你應該檢查你的服務器錯誤日誌中實際的錯誤,而不是試圖猜測問題。 –
首先你使用ajax後,然後你爲什麼發送數據params附加URL。不需要發佈數據就足以向控制器方法發送參數。其次,你好帕拉姆有名稱參數需要然後你期望通過正常的職位。第三,你從ajax中得到的參數是好的,那麼在這些美麗的括號內,參數的名字是什麼。如果它的可選參數使它們可選。從ajax url中刪除參數,並在method中設置方法參數。你很好去.. –