2008-10-20 3 views
10

Quel est l'avantage de transmettre des données en tant que paramètres par rapport à une partie de l'URL dans une requête Ajax GET?Ajax requêtes GET: utiliser des paramètres ou mettre des données dans l'URL?

paramètres: Utilisation

var ajax = new Ajax.Request('server.php',{ 
    parameters: 'store=11200&product=Meat', 
    onSuccess: function(myData){whatever} 
}); 

utilisant URL:

var ajax = new Ajax.Request('server.php?store=11200&product=Meat',{ 
    onSuccess: function(myData){whatever} 
}); 
+0

Utilisez-vous Prototype comme une bibliothèque ajax? Il ressemble à cela des méthodes et autres. – stephenbayer

+0

Prototype en effet. –

Répondre

13

Un avantage à utiliser l'argument parameters est que vous pouvez passer un Hash -comme objet au lieu d'une chaîne. (Si vous faites cela, bien, assurez-vous définir si le paramètre method à "GET", comme la méthode par défaut pour les requêtes Prototype Ajax est POST, voir the Prototype Introduction to Ajax pour plus de détails.)

Un autre avantage, qui est plus en ligne avec L'exemple que vous avez donné est que vous pouvez séparer l'URL de la demande des options qui lui sont envoyées. Cela peut être utile si, par exemple, vous devez envoyer un tas de demandes similaires à plusieurs URL différentes. (Dans ce cas, avoir un paramètre commun Hash que vous modifiez pour chaque requête peut être plus utile que d'utiliser une chaîne de paramètres.)

Pour plus d'informations, voir the Prototype documentation of Ajax options.

+0

Je voudrais accepter cette réponse, mais je ne reçois pas le lien pour le faire pour une raison quelconque. –

+0

Ce n'est plus un lien. C'est l'image de Checkmark sous le nombre de votes. –

+0

Voici une capture d'écran: http://tinyurl.com/5rf9ys –

1
  • Lisibilité
  • Facile à utiliser un objet et il serialise ({store: 11200, product: "Meat"})
  • Lisibilité
+0

Votre réponse ne fait pas référence à la question, n'a aucun sens, et vous incluez deux fois "Lisibilité". – Blairg23

+0

Sigh ........... – nickf

0

Il ne compte pas vraiment d'un point de vue technique sur cette autre que le formatage et la préférence parce que get Les demandes ont toujours les données dans l'URL. Les paramètres sont juste un moyen pratique de construire la requête GET.

9

Un de mes utilisations préférées de paramètres est de passer dans tous les champs d'un formulaire sans les énumérer explicitement:

new Ajax.Request('/myurl.php', { 
    method: 'get', 
    parameters: $('myForm').serialize(), 
    onSuccess: successFunc(), 
    onFailure: failFunc() 
} 
+2

La fonction 'Form.Request' de Prototype rend cette opération encore plus facile. Donnez-lui un formulaire et il fera une requête Ajax en utilisant l'attribut 'action' du formulaire comme URL, plus il sérialisera le formulaire et passera ces valeurs comme paramètres par défaut. – savetheclocktower

+0

C'est très cool. Je ne savais pas à propos de celui-là. –

+0

http://www.prototypejs.org/api/form/request –

1

Pour y répondre, vous devez savoir la façon dont fonctionnent les paramètres. HTTP fondamentalement (je sais, il y en a plus) a deux méthodes pour demander des données: GET et POST.

Pour GET, les paramètres sont ajoutés à la ressource que vous demandez, comme vous l'avez fait dans votre code ci-dessus:/my/resource/name? Para1 = bla. Ici, il n'y a pas de différence si vous ajoutez directement au nom de la ressource ou utilisez l'option paramètres. GET est normalement utilisé pour demander des données (Its GET;)

Pour POST, les paramètres sont écrits séparément à partir de la ressource dans le corps HTTP. Pour cela, vous devez utiliser l'option paramètres. Le POST est utilisé pour envoyer des données (énormes).

Pour spécifier la méthode de requête à utiliser, utilisez l'option méthode.

Remarque: La ressource GET a (en fonction de serveur à serveur) une limite stricte sur la longueur. Donc, ne jamais envoyer beaucoup de données en utilisant GET.

1

Vous pouvez également utiliser le format:

var ajax = new Ajax.Request('server.php',{ 
    parameters: { 
    store: 11200, 
    product: "Meat" 
    } 
    onSuccess: function(myData){whatever} 
}); 

sur l'avantage de le faire de cette façon est que vous pouvez passer d'un GET à un poste sans changer l'URL.

Questions connexes