2009-04-07 6 views
1

j'ai cette fonction

$.ajax({ 
url:aurl, 
method:'GET', 
beforeSend:function(req) {req.setRequestHeader('Authorization', auth);}, 
cache:false, 
dataType:"json", 
error:function() {...}, 
success:function(t) {...} 
}); 

Cependant, les paramètres:

  • méthode
  • beforeSend
  • Cache

sont ignorés par mes navigateurs FF3, IE8 et Chrome. Ainsi, tout ce qui est mis ne change pas la requête envoyée par le navigateur à l'url donnée, par exemple: ne peut pas mettre la méthode à "POST", ou plus important, aucun paramètre Authorization ne peut être inclus dans la requête. est traité.

L'autre comportement étrange est que, sauf si dataType: "json" il n'y aura aucune demande ou réponse envoyée ou reçue comme indiqué en utilisant LiveHTTPHeaders dans FF3. par exemple si dataType: "xml".

L'URL semble être traitée correctement par le navigateur.

Comment peut-on s'assurer que ces paramètres supplémentaires sont envoyés, quelqu'un avec ces problèmes?

Répondre

2

L'URL est-elle distante ou locale?

Selon JQuery Documentation

Note: Tous à distance (pas sur le même domaine) les demandes doivent être spécifiées comme GET lorsque 'script' ou 'jsonp' est le dataType (car il script charge en utilisant une balise de script DOM). Les options Ajax qui nécessitent un objet XMLHttpRequest ne sont pas disponibles pour ces demandes. Les fonctions complete et success sont appelées à la fin, mais ne reçoivent pas d'objet XHR; les fonctions beforeSend et dataFilter ne sont pas appelées.

et pour l'option cache, la valeur par défaut est: "false pour dataType 'script' et 'jsonp'"

+0

grâce, la dataType nécessaire est JSON. L'URL est distante, donc je suppose que les options que je veux définir ne sont pas disponibles. – Adrian33

+0

Je vais regarder dans $ .get() et CURL. Ici, pour $ .get, il est dit "renvoie le XMLHttpRequest" http://tr.im/imZl – Adrian33

+0

Je pense que cette limitation est pour des raisons de sécurité, je ne l'ai pas vraiment utilisé pour les URL distantes. – Aziz