jquery - valeur de retour à l'aide d'ajax résultat sur la réussite

J'ai un petit problème avec jquery $.ajax() de la fonction.

J'ai un formulaire où chaque clic sur le bouton radio ou de la sélection dans le menu déroulant crée une variable de session avec la valeur sélectionnée.

Maintenant - j'en ai un de la liste déroulante des menus à 4 options - le premier (avec étiquette Aucun) a une valeur="" d'autres ont leurs papiers d'identité.

Ce que je veux est d'Aucune option (avec une valeur vide) pour supprimer la session et d'autres pour en créer un, mais seulement si la session avec ce spécifique, sélectionnez le nom n'existe pas déjà - comme toutes les autres options ont le même montant attribué à l'il - c'est juste indiquant ce qui a été sélectionné.

Je ne sais pas si c'est raisonnable, mais ont un oeil sur le code - peut-être cela va le rendre plus clair:

$("#add_ons select").change(function() {
        //get current price of the addons
        var order_price_addon = $(".order_price_addon").text();
        //get price of the clicked radio button from the rel attribute
        var add = $(this).children('option').attr('label');
        var name = $(this).attr('name');
        var val = $(this).val();


        if(val == "") {
            var price = parseInt(order_price_addon) - parseInt(add);
            removeSession(name);
        } else {
            if(isSession(name) == 0) {
                var price = parseInt(order_price_addon) + parseInt(add);
            }   
            setSession(name, val);              
        }

        $(".order_price_addon").html(price);    
        setSession('order_price_addon', price);         
        updateTotal();
});

donc - tout d'abord lors de la #add_ons sélectionnez menu déclencheurs "changement", nous obtenons des valeurs de quelques éléments pour les calculs.

nous obtenons l'attribut label de l'option de notre sélectionner les magasins de la valeur ajoutée au total, nom de le sélectionner pour créer une session avec ce nom et de la valeur à plus tard qui a été sélectionné.

maintenant - nous vérifier si le val == "" (ce qui pourrait indiquer qu'Aucune option a été choisie) et nous déduire le montant de la somme totale ainsi que la suppression de la session de la sélection du nom.

Après c'est là que le problème commence - else.

Autre, nous voulons vérifier si la isSession fonction de() avec le nom de notre sélecteur retourne 0 ou 1 - si elle renvoie la valeur 0, puis on ajoute au total de la valeur stockée dans l'attribut label, mais si elle renvoie 1 - qui donnerait à penser que la session existe déjà - nous de modifier la valeur de cette session par le recréer mais le montant n'est pas ajouté.

Maintenant isSession fonction ressemble à ceci:

function isSession(selector) {
    $.ajax({
        type: "POST",
        url: '/order.html',
        data: ({ issession : 1, selector: selector }),
        dataType: "html",
        success: function(data) {
            return data;
        },
        error: function() {
            alert('Error occured');
        }
    });
}

Maintenant le problème est que je ne sais pas si l'utilisation de "retour" sera de retour le résultat de la fonction - comme il semble ne pas fonctionner, cependant, si j'ai mis les "données" dans la réussite: la section de l'alerte - il ne semble pas renvoyer la valeur de droite.

Personne ne sait comment faire pour renvoyer la valeur de la fonction et de le comparer à la prochaine déclaration?


Merci les gars, j'ai essayé de la façon suivante:

function isSession(selector) {
    $.ajax({
        type: "POST",
        url: '/order.html',
        data: ({ issession : 1, selector: selector }),
        dataType: "html",
        success: function(data) {
            updateResult(data);
        },
        error: function() {
            alert('Error occured');
        }
    });
}

puis le updateResult() fonction:

fonction updateResult(data) {
résultat = données;
}

résultat est la variable globale - qui je suis alors d'essayer de lire:

$("#add_ons select").change(function() {
        //get current price of the addons
        var order_price_addon = $(".order_price_addon").text();
        //get price of the clicked radio button from the rel attribute
        var add = $(this).children('option').attr('label');
        var name = $(this).attr('name');
        var val = $(this).val();


        if(val == "") {
            var price = parseInt(order_price_addon) - parseInt(add);
            removeSession(name);
        } else {
            isSession(name);
            if(result == 0) {
                var price = parseInt(order_price_addon) + parseInt(add);
            }   
            setSession(name, val);              
        }

        $(".order_price_addon").html(price);    
        setSession('order_price_addon', price);         
        updateTotal();
    });

mais pour une raison qu'il ne fonctionne pas - il une idée?

InformationsquelleAutor user398341 | 2010-07-21