Windows 10, Codeigniter 3, Wamp3.'Bad Request' avec ajax et codeigniter
La commande Ajax déclenche une erreur de demande incorrecte. Ceci est une vieille châtaigne mais la recherche en ligne montre habituellement le problème d'être CSRF. Cependant, je tiens à souligner, d'emblée que j'ai CSRF désactivé pour ce test:
config['csrf_protection'] = FALSE;
J'ai mis en place un code de test volontairement très simple. Le contrôleur ressemble à ceci:
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
et la vue ressemble à ceci:
<!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>
La console montre une mauvaise demande
POST XHR http://localhost/faith/ajax/hello%20+%20fullname [HTTP/1.1 400 Bad Request 9ms]
Donc, si CSRF est pas le coupable, est-il un problème de Wamp? Tout le reste semble bien fonctionner. J'ai passé tellement de temps là-dessus! Que se passe-t-il?
Vous devriez vérifier votre journal d'erreur de serveur pour l'erreur réelle au lieu d'essayer de Devinez le problème. –
Tout d'abord, vous utilisez post ajax alors pourquoi envoyer des paramètres de données attachent avec url. Pas besoin de publier des données pour envoyer des paramètres à la méthode du contrôleur. Deuxièmement bonjour param a besoin d'un nom, alors ce que vous attendez par un post normal. Troisième le paramètre que vous obtenez d'ajax est bien alors quel nom param fait dans ces belles parenthsis.Si ses paramètres optionnels les rendent optionnels. Supprimez param de l'ajax url et rendez la méthode param facultative dans la méthode. Vous êtes bon à aller .. –