通过 jQuery ajax json 迭代 .each 在 IE 中不起作用

发布于 2024-11-18 03:16:27 字数 1202 浏览 0 评论 0原文

我使用以下代码创建带有“随机”产品的 div。从 PHP 接收到的 JSON 数据是这样的:

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

“新”产品必须转到

,“Best”转到“Best”,依此类推。

代码:

$.ajax({
    url: "/index.php?AjaxRequest&action=5",
    dataType: "json",
    error: function (xhr, status, errorThrown) {
        alert(errorThrown + '\n' + status + '\n' + xhr.statusText);
    },

    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="' + this.link + '" class="right_sidebar">';
                new_str += '<img class="right_sidebar_thumb" src="' + this.image + '" alt="' + this.name + '"/></a></li>';
            });
            new_str += '</ul>';
            $('#' + key).append(new_str);
        });
    }
});

只有 IE 才会出现此问题。它仅在第一次迭代,并且仅填充第一个 div,而所有其他浏览器都工作正常。

问题不在于重复的 div id,并且 JSON 有效,并且 jQuery 没有给出错误。

I'm using the following code to create divs with "random" products. The JSON data received from PHP is like this:

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

"New" products must go to <div id="New">, "Best" to "Best" and so on.

Code:

$.ajax({
    url: "/index.php?AjaxRequest&action=5",
    dataType: "json",
    error: function (xhr, status, errorThrown) {
        alert(errorThrown + '\n' + status + '\n' + xhr.statusText);
    },

    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="' + this.link + '" class="right_sidebar">';
                new_str += '<img class="right_sidebar_thumb" src="' + this.image + '" alt="' + this.name + '"/></a></li>';
            });
            new_str += '</ul>';
            $('#' + key).append(new_str);
        });
    }
});

The problem arises only with IE. It iterates only the first time, and fills only the first div, while all other browsers work fine.

The problem is not in duplicate div ids, and JSON is valid, and jQuery gives no errors.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

月光色 2024-11-25 03:16:27

问题现已解决!
需要关闭缓存:cache:false
谢谢大家!

Problem is now resolved!
Needed to turn caching to off: cache:false !
Thanks to everybody!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文