jquery ajax $.poste de travail IE10
J'ai essayé de deux façons.
Voie 1
function Login() {
var email = encodeURIComponent($("#loginemail").val());
var pass = encodeURIComponent($("#password").val());
$.ajax({
url:"/user/login",
type: "POST",
data: {email:email, password:pass},
dataType: "json"
}).done(LoginDone);
//$.post("/user/login", {email:email, password:pass}, LoginDone);
}
2
function Login() {
var email = encodeURIComponent($("#loginemail").val());
var pass = encodeURIComponent($("#password").val());
$.post("/user/login", {email:email, password:pass}, LoginDone);
}
Deux méthodes fonctionnent très bien sur chrome, mais pour une raison quelconque avec IE il n'envoie pas les données {email:email, password:pass}
dans le POST
, ou à tous les.
J'ai essayé les deux sur un serveur local et sur un serveur web, à la fois avec les mêmes résultats.
À l'aide d'IE10 ici.
Ce sera un dur à résoudre, IE10 est encore en version bêta.
Strictement parlant, le
a utiliser sans, ne résout pas tout.
comparer console d'inspection de la demande pour IE9 ou IE8 vue de même et de voir quelles sont les différences sont. Également ajouter un gestionnaire d'erreur $.ajax.
Je peux voir le problème dans mon code (qui n'utilisent pas de code JSON, mais utilisé de l'objet.varible = valeur"), et d'autres personnes peuvent repro.
Strictement parlant, le
encodeURIComponent
appels doivent être inutile, puisque jQuery va le faire pour vous.a utiliser sans, ne résout pas tout.
comparer console d'inspection de la demande pour IE9 ou IE8 vue de même et de voir quelles sont les différences sont. Également ajouter un gestionnaire d'erreur $.ajax.
"not working"
n'est pas beaucoup d'informations pour des travaux deJe peux voir le problème dans mon code (qui n'utilisent pas de code JSON, mais utilisé de l'objet.varible = valeur"), et d'autres personnes peuvent repro.
OriginalL'auteur Kelly Elton | 2012-06-27
Vous devez vous connecter pour publier un commentaire.
devrait être
Vous êtes de passage à la valeur des variables comme la clé, donc si votre ressource côté serveur attend
email
il est en train de voir la valeur de cette variableencodeURIComponent($("#loginemail").val())
.Ce n'est probablement pas un IE10 problème, cela ne devrait pas fonctionner comme écrit dans n'importe quel navigateur.
Mise à jour
Cette réponse peut ne plus être applicables en raison de corrections de bug dans IE 10.Veuillez ignorer cette réponse c'est mal et ne peut pas être supprimé en raison d'être acceptée.
e-mail et pass si vous n'avez pas de nom d'une variable email et pass. Donc, si vous ne mettez pas de guillemets, la clé sera la valeur de cette variable.
Non mais c'est un objet valide littérale
{"email":email, "password":pass}
, donc le code exactement comme que. Et comme une correction de ce problème est seulement avec l'e-mail. Votre mot de passe doit fonctionner ainsi. Je sais ce que tu veux dire par la doc JQuery, mais il fonctionne tout aussi bien que je l'ai écrit ci-dessus.Clés en Javascript objet littéraux peuvent être non cotées, à condition qu'ils ne sont pas des mots réservés. Ni
email
nipassword
est réservé. Donc le problème avec IE10 doit se trouver ailleurs pas clairement ce que cela pourrait être.Cela dit, cette page recommande d'éviter
password
(et beaucoup d'autres non-mots réservés).OriginalL'auteur marteljn
Ne peut pas réparer @jQuery bug tracker: AJAX Post sur IE10 /Windows 8
OriginalL'auteur VahidN
Après une profonde debuggind j'ai trouvé une solution de contournement pour IE10 AJAX POST Bug:
n'utilisez pas de POST avec GET.
changement de
OriginalL'auteur
IE-10 ne fonctionne pas sérialiser des données => $(this).serialize()
Pour cela, vous pouvez utiliser cette ligne sur _layOut.chtml avant la balise meta. Donc, c'est à dire-10 fonctionne comme IE-9.
OriginalL'auteur Md. Nazrul Islam
Essayez ceci: http://code.gishan.net/code/solution-to-ie10-ajax-problem
Fonctionne pour moi. C'est un problème connu de IE10.
OriginalL'auteur henryP
J'ai eu le même problème avec IE 10 (10.0.9200.16521) sur Win7 x64 SP1.
J'ai résolu le problème tout simplement en utilisant une version plus récente de jQuery (1.9.1 en place de 1.8.3)
OriginalL'auteur cardy