IE(6~9)无法正确处理Jquery ajax json数据:(

时间:2011-06-30 13:10:09

标签: jquery ajax json internet-explorer

我会感谢任何帮助!

我正在使用以下代码创建具有“随机”产品的区域。 从php-script收到的JSON数据是这样的:

{"New":[{"product_id":"50",...},...],
"Best":[{"product_id":"26",...},...],
...}

“新”产品必须转到<div id="New">,依此类推。

问题1:虽然它适用于所有优秀的浏览器, IE(6~9)将所有div都清空。

问题2:我希望客户端缓存此ajax-JSON数据。 从FireBug中可以看出,这些请求不会被缓存。我是否必须使用插件?

 $.ajax({
    url: "/index.php?AjaxRequest&action=5",
    dataType: "json",
    success: function(data){
    $.each(data, function(key, value) { 
    var new_str ='<ul>';
    $(value.sort(function() {return 0.5 - Math.random()}).slice(0,3)).each(function(){
    new_str+='<li><a href="#" class="right_sidebar" onclick="location.href=\''+this.link+'\'">';
    new_str+= '<img class="right_sidebar_thumb" src="'+this.image+'" alt="'+this.name+'"/></a></li>';
    });
    new_str+='</ul>';
        $('#'+key).append(new_str);
    });
    }});

4 个答案:

答案 0 :(得分:1)

检查JSON对象中的最后一项是否后面没有逗号。我知道这可以打破IE,因为它无法处理有空项目

答案 1 :(得分:0)

Jquery期望只有一个具有给定id的元素。尝试切换到

<div class=’new-product’/>

并与

匹配
$('.new-product')

至于捕获,请尝试使用错误方法

$.ajax({
  error: function(){
  }
});

答案 2 :(得分:0)

我不知道这是不是你的问题,但是当我使用JSON时,我经常遇到JSON结构的问题。为了帮助找到问题,我使用了一个非常好的在线JSON验证器:http://jsonlint.com/

答案 3 :(得分:0)

终于找到了解决方案! 事实证明IE正在缓存jquery请求。 添加cache: false解决了这个问题。 用IE浏览器!