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中设置方法参数。你很好去.. –