当前位置: 首页 > 面试题库 >

jQuery $ .ajax在IE8中不起作用,但在FireFox和Chrome上有效

简景焕
2023-03-14
问题内容

我有以下ajax调用,该调用在Firefox和Chrome中完美运行,但在IE中则不行:

function getAJAXdates( startDate, numberOfNights, opts ) {

    var month   =   startDate.getMonth() + 1;
    var day     =   startDate.getDate();
    var year    =   startDate.getFullYear();
    var d       =   new Date();

    var randNum =   Math.floor(Math.random()*100000000);

    $.ajax({
        type        :   "GET",
        dataType    :   "json",
        url         :   "/availability/ajax/bookings?rand="+randNum,    
        cache       :   false,
        data        :   'month='+month+'&day='+day+'&year='+year+'&nights='+numberOfNights,
        contentType :   'application/json; charset=utf8',
        success     :   function(data) {
            console.log('@data: '+data);
            insertCellData(data, opts, startDate);
        },
        error:function(xhr, status, errorThrown) {
            console.log('@Error: '+errorThrown);
            console.log('@Status: '+status);
            console.log('@Status Text: '+xhr.statusText);
        }
    });
}

我知道一个事实,所有变量都传递正确的内容,而$ .ajax确实传递所有参数/值。

这就是我遇到的错误:

日志:@错误:未定义日志:@状态:parsererror日志:@状态文本:确定

我知道IE上的缓存问题,并实施了一个随机参数来清除它。

这是我得到的JSON(我可以使用Charles看到它)

{
   "availability":[
      {
         "inventory_id":"5",
         "booking_id":"21",
         "start_date":"05-01-2010",
         "number_nights":4,
         "text":"deFrancisco, Martin - $500.00 ACTIVE",
         "type":"BOOKING"
      }
   ]
}

最后,这些是从后端发送回的标头:

header('Content-Type: application/json; charset=utf8');
header("Cache-Control: no-cache");
header("Expires: 0");
header('Access-Control-Max-Age: 3628800');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE');

有任何想法吗?


问题答案:

我会注释掉contentType并添加dataType:“ json”

来自http://api.jquery.com/jQuery.ajax/

dataType: 您希望从服务器返回的数据类型。

contentType: 将数据发送到服务器时,请使用此内容类型。

您指定要发送json,但不是-可能是问题所在?



 类似资料:
  • 问题内容: 这是我的代码 这段代码在IE8中工作正常,但是在Firefox和Chrome浏览器中却失败了。当我检查XHR对象时,它表示状态码为0。我检查了所有其他问题,没有一个问题可以帮助我识别问题。 让我知道,如果我在这段代码中做错了什么。如果$ .ajax有一些兼容性问题,请提出与其等效的建议。 更新: 我们在http://www.xml.com/pub/a/2005/12/21/json-d

  • 问题内容: 我已经设置了’cache:true’选项,但是该缓存似乎仅在IE中有效,而在Firefox和Chrome中不起作用。这是一个已知问题吗? 问题答案: 该选项不是jQuery维护的特殊缓存,因此可能有点用词不当。 将时间戳附加到所请求的URL,因此 强制 浏览器获取新副本,这更像是一个缓存破坏者。 不执行任何操作 ,将保留本机浏览器缓存以执行此处将要执行的任何操作。 这根本不是jQuer

  • 我有一种字体在IE8和IE9以及所有其他浏览器中都能正常工作,但第二种字体只在IE9和其他浏览器中工作。在IE8中,我得到了一个错误: “CSS3111:@font-face遇到未知错误。” 我一直在四处看书,尝试了很多事情,但都没有运气。 我的代码是: 我试过用几个不同的生成器多次重新生成eot,玩过CSS,玩过头,玩过域,等等,但是看起来它们都很好。如前所述,相同的代码在相同的,只是指向不同的

  • 问题内容: 我已经动态创建了一个复选框。我曾经在单击复选框时调用过一个函数,该函数在Google Chrome和Firefox中有效,但 在Internet Explorer 8中不起作用 。这是我的代码: 是我的事件处理程序。 问题答案: 尝试: 更新: 对于IE9之前的InternetExplorer版本,应使用attachEvent方法将指定的侦听器注册到调用它的EventTarget上,对

  • 问题内容: 我正在编写ajax Web应用程序,但是由于任何原因,当我在Internet Explorer 9(IE9)中对内部数据服务执行GET时,它都无法正常工作。同样的调用在Chrome,Firefox和Safari中也可以正常工作。我正在使用本地主机Web服务器(沼泽)进行开发,并且正在与要尝试的数据服务在同一网络上进行开发。我正在使用Jquery 1.8.1(我返回了几个版本,但仍然看到

  • 我有一些 在量角器中,我们搜索并找到元素,检查文本是否符合我们的期望,然后对该元素调用。测试在Chrome中运行良好,但在IE中就好像没有点击发生一样。破坏了测试。 IE 11是否支持点击