Простой AJAX-запрос с использованием jQuery не работает на IE - PullRequest
4 голосов
/ 06 сентября 2010

Это мой код, который иногда работает, а иногда нет.

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;
};

ОК.Это на португальском, но я думаю, что вы получите общую картину.Иногда это работает, без проблем, но иногда (только в IE, без проблем в Firefox) он выдает ошибку javascript в моем файле jquery.js (минимизирован).Описание ошибки следующее:

Объект не поддерживает это свойство или метод: jquerymin.js строка 123 символ 183 ..

, что составляет ...

{return new A.XMLHttpRequest}

где-то в середине файла jquery.js.Кажется, это очень специфично для IE, так как у меня не было таких проблем в Firefox. У этого парня , видимо, была та же проблема, что и у меня, но ответов пока нет.

Кто-нибудь еще видел это?Заранее спасибо

PS: я запускаю IE 8

Ответы [ 2 ]

1 голос
/ 06 сентября 2010

Вы пытались использовать полный URL вместо ../ модель ...?Например: http://www.mysite.com/model/login_ajax.php

Также, возможно, попробуйте изменить свойство 'xhr', используя метод .ajax jQuery ... что-то вроде:


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 голосов
/ 08 сентября 2010

Это как-то связано с порядком, в котором вы пробуете все типы браузеров, чтобы создать правильный тип объекта XMLHTTP REQUEST. Я объясню это более подробно на следующей странице:1002 * Несоответствие AJAX в IE 8?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...