J'ai cette vue
public function create_delivery(){
if(isset($_POST)):
$first_address= $this->input->post('first_address');
$second_address= $this->input->post('second_address');
$description= $this->input->post('description');
$Weight= $this->input->post('Weight');
$price= $this->input->post('price');
$data = array(
"first_address"=>$first_address,
"second_address"=>$second_address,
"description"=>$description,
"Weight"=>$Weight,
"price"=>$price
);
$this->deliverys_model->create_delivery($data);
endif;
}
et j'ai envoyé une demande de publication par ajax à la méthode du contrôleur
$(document).ready(function(){
$("#create_delivery").submit(function(evt){
var postData = $(this).serialize();
$.ajax({
url: baseURL + "deliverys/create_delivery",
type:'post',
data:postData,
dataType:'json',
success:function(data){
alert('delivery created');
}
});
evt.preventDefault();
});
});
c'est le contrôleur
<div class="w3-row w3-padding-64"> <div class="w3-twothird w3-container"> <form id='create_delivery' method="post" class="form-horizontal" enctype="multipart/form-data"> from <input type="text" name="first_address"><br> To <input type="text" name="second_address" ><br> <label>weight</label> <input type="number" name="weight" ><br> <label>price</label> <input type="number" name="price" ><br> <label>description</label><br> <textarea name="description"></textarea> <br> <input type="submit" value="Submit"> </form> </div> </div>
le problème que toutes les valeurs deviennent nulles, cela fonctionne quand j'envoie la demande de publication sans ajax mais avec ajax les valeurs sont NULL
Numéro d'erreur: 1048
INSÉRER DANS livraisons ( first_address , second_address , description , ready_to_buy , Poids , prix ) VALEURS (NULL, NULL, NULL, NULL, NULL, NULL)
4 Réponses :
Essayez ces
$first_address= $this->input->post('first_address');
$second_address= $this->input->post('second_address');
$description= $this->input->post('description');
$Weight= $this->input->post('Weight');
$price= $this->input->post('price');
Au lieu de
$first_address = $_POST['first_address']; $second_address = $_POST['second_address']; $description = $_POST['description']; $Weight = $_POST['weight']; $price = $_POST['price'];
Je ne connaissais pas le contexte de $ this-> input dans votre code, vous pourriez peut-être afficher plus de votre code, mais le code ci-dessus devrait fonctionner.
vous devez remplacer "type" par "méthode"
$.ajax({
url: baseURL + "Trips/create_trip",
method:'POST',
data:postData,
dataType:'json',
success:function(data){
alert('Trip created');
}
});
Je pense que vous n'obtenez pas de données de formulaire avec var postData = $ (this) .serialize () .
Essayez comme ceci $ ("# create_delivery "). serialize ()
S'il n'y a pas de dans le formulaire, n'utilisez pas enctype =" multipart / form-data "
$(document).ready(function(){
$("#create_delivery").submit(function(evt){
evt.preventDefault();
$.ajax({
url: baseURL + "deliverys/create_delivery",
type:'POST',
data:$("#create_delivery").serialize(),
dataType:'json',
success:function(data){
alert('delivery created');
}
});
evt.preventDefault();
});
});
.serialize (); est utilisé pour créer une chaîne de méthode get ... si vous voulez publier des données, utilisez ajax changez votre js avec
$("#create_delivery").submit(function(evt){
evt.preventDefault();
var first_address = $( "input[name='first_address']" ).val();
var second_address = $( "input[name='second_address']" ).val();
var weight = $( "input[name='weight']" ).val();
var price = $( "input[name='price']" ).val();
var description = $( "input[name='description']" ).val();
$.ajax({
url: baseURL + "deliverys/create_delivery",
type:'post',
data : {first_address:first_address,second_address:second_address,weight:weight,price:price,description:description},
dataType:'json',
success:function(data){
alert('delivery created');
}
});
});