2010-09-06 6 views
4

Ceci est mon code, qui fonctionne parfois et parfois non.Requête AJAX simple utilisant jQuery ne fonctionnant pas sur IE

var resolve_ajax_login=function(){ 
    $.ajaxSetup({cache:false }); 
    var loginvar=$("#inputlogin").attr("value"); 
    var senhavar=$("#inputsenha").attr("value"); 
    $.post("../model/php/login_ajax.php", 
     {login:loginvar, senha:senhavar}, 
     function(responseText){ 
      if (responseText=="ok"){ 
       window.location="areatrab.php"; 

      }else{ 
       $("#inputlogin").attr("value",""); 
       $("#inputsenha").attr("value",""); 
       $("#divmensagem").html("<span style='color:red;font-size:70%;'>"+responseText+"</span>"); 

      } 
     } 
); 
    return false; 
}; 

Ok. C'est en portugais mais je pense que vous avez l'image générale. Parfois ça marche, pas de problème, mais d'autres fois (seulement dans IE, pas de problème quel qu'il soit dans Firefox) ça jette une erreur javascript dans mon fichier jquery.js (minifié). La description de l'erreur est la suivante:

objet ne prend pas en charge cette propriété ou méthode: ligne 123 jquerymin.js caractère 183 ..

ce qui revient à ...

{return new A.XMLHttpRequest} 

quelque part dans le milieu du fichier jquery.js. Il semble être très spécifique à IE, car je n'avais pas de tels problèmes sur Firefox. This guy apparemment eu le même problème que moi, mais n'a pas encore reçu de réponse.

Est-ce que quelqu'un d'autre a déjà vu ça? Merci à l'avance

P.S .: J'exécuter IE 8

+0

simplement se demander avez-vous utilisé Microsoft Developer Tools ou un outil similaire s surveiller la communication AJAX entre le client et le navigateur? Cela pourrait être utile –

+0

j'ai utilisé le débogueur javascript IE, mais c'est tout, et j'ai eu le message d'erreur que j'ai mentionné ci-dessus ... J'ai utilisé firebug aussi, mais sur firefox cela fonctionne comme un charme. Est-ce que ce moniteur ajax est livré avec les outils de développement IE? –

Répondre

0

Il est quelque chose à voir avec l'ordre dans lequel vous essayez tous les différents types de navigateurs afin de créer le bon type de XMLHTTP objet REQUEST .. Je vais l'expliquer plus en détail dans la page suivante:

AJAX inconsistency in IE 8?

1

Avez-vous essayé d'utiliser une URL complète au lieu de ../ modèle ...? Par exemple: http://www.mysite.com/model/login_ajax.php

Aussi, peut-être essayer de modifier la propriété « XHR » en utilisant la méthode .ajax jQuery ... quelque chose comme:


var loginvar = $("#inputlogin").val(); 
var senhavar = $("#inputsenha").val(); 
var ajax_obj = null; 

var resolve_ajax_login = function() { 
    if(ajax_obj !== null) { 
    try { 
     ajax_obj.abort(); 
    } catch(e) { 
    } 
    } 

    ajax_obj = $.ajax({ 
    type: 'POST', 
    cache: false, 
    url: '../model/php/login_ajax.php', 
    data: {login:loginvar, senha:senhavar}, 
    dataType: 'text', 
    timeout: 7000, 
    success: function(data) 
    { 
     if(response == 'ok') { 
     alert("right on!"); 
     } else { 
     alert("not ok"); 
     return; 
     } 
    }, 
    error: function(req, reqStatus, reqError) 
    { 
     alert("error"); 
     return; 
    }, 
    'xhr': function() { 
     if(ajax_obj !== null) { 
     return ajax_obj; 
     } 

     if($.browser.msie && $.browser.version.substr(0,1) <= 7) { 
     return new ActiveXObject("Microsoft.XMLHTTP"); 
     } else { 
     return new XMLHttpRequest(); 
     } 
    } 
    }); 
} 
+0

Hmm je pourrais le faire, mais si c'était le problème, je n'aurais pas ce problème chaque fois que j'essaye d'envoyer une demande? Le navigateur crie seulement à certaines occasions, pas tous .. –

+0

bon point, permettez-moi d'ajouter quelque chose d'autre ici .. – taber

+0

une chance w/that? – taber

Questions connexes