1
votes

Comment définir une URL Ajax avec une variable

Je veux ajouter une chaîne à l'URL dans le processus ajax, mais échoue à chaque fois que j'accède à la fonction. lorsque j'envoie le formulaire, il n'accède qu'à cette URL 'Master_data /'

var jenis_submit = document.getElementById('jenis_submit');
var submit_url = '';
if (jenis_submit == '1') {

    submit_url = "func_save_instansi";
} else if (jenis_submit == '2') {

    submit_url = "func_update_instansi";
}

$.ajax({
    url: '<?php echo base_url();?>Master_data/' + submit_url,
    method: 'POST',
    data: dataKirim,
    contentType: false,
    cache: false,
    processData: false,
    success: function(data) {
        // console.log(data);
        $('#notif').html(data);
    }
});


4 commentaires

montrez la fonction de votre contrôleur. vérifiez également submit_url avant l'appel ajax qu'il a la bonne valeur ou non


Déboguez le code et voyez ce que vous obtenez dans la variable "submit_url", utilisez console.log


Assurez-vous que la variable submit_url est écrasée dans l'une des conditions if else, bcoz si elle n'entre dans aucune condition, alors bien sûr sera considérée comme une chaîne vide comme vous l'avez initialisée à ''


il suffit de vérifier la valeur de jenis_submit dans la console.C'est peut-être parce que la valeur de jenis_submit n'est pas en 1 ou 2


3 Réponses :


0
votes

Attribuez simplement la valeur php à une variable js et concattez à la fois

var number = document.getElementById("number").value; //in your code `.value` is missing 

puis en ajax

url: url + submit_url,

MISE À JOUR:

J'ai manqué une autre erreur dans votre code

var url = '<?php echo base_url();?>Master_data/';

comme mentionné dans la réponse de (M.Hemant) ci-dessus.


4 commentaires

Cela ne semble pas faire de différence. Ce que vous faites, c'est simplement déclarer une variable différemment, puis l'utiliser en ajax ... Il n'y a aucune différence entre votre code et celui de Reza alors


no en ajax, l'url pense comme terminée lorsqu'elle obtient une fin entre guillemets simples. c'est pourquoi il n'obtient pas cette variable. donc j'essaye de l'attribuer à une nouvelle variable et de compléter l'url avec concat


Moi aussi, j'ai fait face à ce genre de situations. laissez-le essayer et revenez vers nous avec ses réponses ...


Ok, laissez-le essayer et nous conclurons plus tard si c'est même un cas.



0
votes

Premièrement, obtenez la valeur par identifiant avec du javascript comme celui-ci,

url: "<?php echo base_url('master_data/'); ?>" + submit_url,

puis Remplacez votre code par ceci

//var number = document.getElementById("number").value; //in your code `.value` is missing

var jenis_submit = document.getElementById('jenis_submit').value;
var submit_url = '';
if (jenis_submit == '1') {

    submit_url = "func_save_instansi";
} else if (jenis_submit == '2') {

    submit_url = "func_update_instansi";
} 


2 commentaires

Et qu'est-ce que cela va faire? signifie qu'il s'agit de la partie précédente de l'url, c'est-à-dire avant "Master_data /" et que cela pourrait être n'importe quoi


supposons que master_data est son contrôleur et submit_url est une fonction, donc il créera localhost / prjname / master_data / function_name



0
votes

Essayez ceci:

var jenis_submit = document.getElementById('jenis_submit');
var submit_url   = '';

if (jenis_submit == '1') {
    submit_url = "func_save_instansi";
} else if(jenis_submit == '2') {
    submit_url = "func_update_instansi";
}

var post_url = '<?php echo base_url('Master_data'); ?>' + '/' + submit_url;

$.ajax({
     type: "POST",
     url: post_url,
     data: dataKirim,
     beforeSend: function() {
       // you can show a preloader here
     }
 }).done(function(data) {
     // hide the preloader
     // console.log(data);
     $('#notif').html(data);
 }).fail(function() { 
   // hide the preloader
   // show an error message
 });


0 commentaires