javascript
  • jquery
  • prototypejs
  • 2015-04-13 5 views 0 likes 
    0

    J'ai la fonction suivante:Prototype jQuery Confusion de conversion

    function updateproductselectionxxx(form, productassignment, mainproductid, subprodqty) { 
        var checkingurl = "shopajaxproductselection.asp"; 
        var pars = 'productassignment=' + productassignment + '&qty=' + subprodqty + '&mainid=' + mainproductid; 
        var url = checkingurl + '?' + pars; 
        var target = 'productselectionresult' + productassignment; 
        var myAjax = new Ajax.Updater(target, checkingurl, { 
         method: 'post', 
         parameters: pars 
        }); 
    } 
    

    Et je suis en train de convertir tout le javascript sur ce site à jQuery. En général, je peux utiliser quelque chose de similaire à:

    function updateproductselection(form, productassignment, mainproductid, subprodqty) { 
        $.ajax({ 
         type: 'POST', 
         url: 'shopajaxproductselection.asp', 
         data: $(form).serialize(), 
         success: function (response) { 
          $(form).find('productselectionresult' + productassignment).html(response); 
         } 
        }); 
    
        return false; 
    } 
    

    Et le tour est joué, mais je veux vraiment que d'envoyer plus de 1 champ comme indiqué dans la première fonction et je voudrais aussi envoyer le long des informations que je vous envoie directement à la fonction lors de son appel. JavaScript n'est certainement pas mon domaine d'expertise mais habituellement je peux m'embrouiller, mais cette fois tout ce que j'ai essayé a causé des erreurs et je ne vais pas très loin. Toute aide serait grandement appréciée.

    +0

    Voulez-vous envoyer uniquement des données de formulaire avec votre appel ajax? voir http://api.jquery.com/category/ajax/helper-functions/ –

    +0

    Quelle erreur avez-vous exactement? Prototype suppose qu'une chaîne est une référence à un ID par défaut, mais jQuery pas, donc vous trouvez la fonction peut-être besoin d'un "#" supplémentaire avant productselectionresult. –

    Répondre

    0

    Cela ressemble à un peu de confusion entre POST et GET. Bien que la méthode de demande soit définie sur POST dans l'ancienne version de Prototype, les paramètres sont envoyés via CGI, qui apparaît normalement sur le serveur en tant que GET. Il est un peu difficile de dire plus sans voir le code côté serveur, mais vous pouvez essayer, de sorte que la version jQuery imite de plus près l'ancienne version du prototype:

    function updateproductselection(form, productassignment, mainproductid, subprodqty) { 
        var checkingurl = "shopajaxproductselection.asp"; 
        var pars = 'productassignment=' + productassignment + '&qty=' + subprodqty + '&mainid=' + mainproductid; 
        var url = checkingurl + '?' + pars; 
        $.ajax({ 
         type: 'POST', 
         url: url, 
         data: {}, 
         success: function (response) { 
          $(form).find('#productselectionresult' + productassignment).html(response); 
         } 
        }); 
    
        return false; 
    } 
    

    Notez que j'ai ajouté un hachage # à le début de productselectionresult - ceci est crucial en raison de la différence de fonctionnement de PrototypeJS. Dans Prototype, vous pouvez utiliser un sélecteur d'ID comme:

    $('id') 
    

    alors que dans jQuery il doit être:

    $('#id') 
    
    +0

    Merci beaucoup, cela a fonctionné et je serai en mesure de suivre à l'avenir que je continue à passer à travers et modifier ces fichiers. – Sirena

    +0

    Ajout de plus de clarté - Étant donné que l'URL d'origine possédait les paramètres et les valeurs ajoutés à la chaîne de requête (paramètres GET), les paramètres étaient toujours envoyés via GET même si la méthode était POST. –

     Questions connexes

    • Aucun problème connexe^_^