使用jQuery的简单AJAX请求无法在IE上运行

时间:2010-09-06 03:45:21

标签: javascript jquery ajax internet-explorer

这是我的代码,有时有效,有时无效。

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中没有任何问题)它会在我的jquery.js文件中抛出一个javascript错误(缩小)。错误描述如下:

Object不支持此属性或方法:jquerymin.js第123行字符183 ..

相当于......

{return new A.XMLHttpRequest}

位于jquery.js文件中间的某个地方。它似乎非常特定于IE,因为我在Firefox上没有这样的问题。 This guy显然遇到了与我相同的问题,但尚未得到任何答复。

有没有人见过这个?在此先感谢

P.S。:我运行IE 8

2 个答案:

答案 0 :(得分:1)

您是否尝试使用完整的网址而不是../模型...?例如:http://www.mysite.com/model/login_ajax.php

另外,也许尝试使用jQuery的.ajax方法修改'xhr'属性......类似于:


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

答案 1 :(得分:0)

这与您尝试所有不同类型的浏览器的顺序有关,以便创建正确类型的XMLHTTP REQUEST对象。我将在下一页中更详细地解释它:

AJAX inconsistency in IE 8?