【问题标题】:Why is my event variable undefined in this ajax call?为什么我的事件变量在这个 ajax 调用中未定义?
【发布时间】:2020-12-01 19:52:09
【问题描述】:

我正在尝试获取内容Ajax josn。它可以工作,但在处理数据时出现错误。

$.ajax({
    url: "https://www.blogger.com/feeds/5333031351806450888/pages/default/918209522815033390?alt=json-in-script",
    method: "GET",
    success: function (e) {
        var t;
        for (t = 0; t < e.feed.entry.length; t += 1) {
            var n = $(e.feed.entry[t].content.$t);
            if (0 === t && !$("body").hasClass("error_page")) {
                for (var o = n.find("li"), d = [], a = 0; a < o.length; a += 1) d.push($(o[a]).text());
                var r,
                i = zaxid,
                f = zaxid,
                s = d.length - 1;
                for (r = 0; r < d.length; r += 1) {
                    if ( (-1 != i.indexOf(d[r]))) {
                        var l = $(e.feed.entry[t].content.$t).find("script"),
                        p = $(e.feed.entry[t].content.$t).find("style");
                        $("head").append(p), $("head").append(l);
                        break;
                    }
                }
            }
        }
    },          
});

但它没有工作得到这个错误

知道怎么解决吗?

【问题讨论】:

  • e.feed(或e.feed.entry)未定义 - 不存在。
  • 在for循环之前记录e.feed到控制台,看看它是否真的包含入口属性
  • 我没有看到 feed.entry 从该 url 重新运行。您还缺少 url 值末尾的引号,可能只是帖子中的拼写错误。url: ".. ?alt=json-in-script

标签: javascript jquery json ajax


【解决方案1】:

您正在获取的位于https://www.blogger.com/feeds/5333031351806450888/pages/default/918209522815033390?alt=json-in-script 的页面返回此内容:

gdata.io.handleScriptLoaded({"version":"1.0","encoding":"UTF-8","entry":{"xmlns":"http://www.w3.org/2005/Atom","xmlns$gd":"http://schemas.google.com/g/2005","id":{"$t":"tag:blogger.com,1999:blog-5333031351806450888.page-918209522815033390"},"published":{"$t":"2020-11-29T08:57:00.002-08:00"},"updated":{"$t":"2020-12-01T11:26:33.705-08:00"},"title":{"type":"text","$t":""},"content":{"type":"html","$t":"\u003cdiv class\u003d\"remain\"\u003e\u003cdiv class\u003d\"redirect\"\u003e\u003cdiv class\u003d\"ops\"\u003e\u003cstyle\u003e.header-panel{text-align:center;font-size:19px;font-family:cairo;background:#fff;color:#666;padding:0;margin:0 auto;width:100%} \u003c/style\u003e\u003cdiv class\u003d\"header-panel\"\u003e\u003cdiv class\u003d\"activetheme\"\u003e\u003ch2\u003eعفوا ! هذا القالب غير مرخص لهذه المدونة\u003c/h2\u003e\u003ch4\u003e\t هذا القالب اذا حصلت عليه بشكل غير قانوني او وجدته في احد المواقع الاخرى فيجب ان يتم تفعيله من طرف مالكه الأصلي\u003ca href\u003d\"https://Twitter.com\"\u003eمن هنا\u003c/a\u003e\t\u003c/h4\u003e\t\u003c/div\u003e\u003c/div\u003e \u003c/div\u003e\u003c/div\u003e\u003cul class\u003d\"domains\"\u003e\u003cli\u003e4949659660968074099\u003c/li\u003e\u003c/ul\u003e\u003c/div\u003e"},"link":[{"rel":"edit","type":"application/atom+xml","href":"https://www.blogger.com/feeds/5333031351806450888/pages/default/918209522815033390"},{"rel":"self","type":"application/atom+xml","href":"https://www.blogger.com/feeds/5333031351806450888/pages/default/918209522815033390"},{"rel":"alternate","type":"text/html","href":"http://ryui87.blogspot.com/p/blog-page.html","title":""}],"author":[{"name":{"$t":"0"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"35","height":"35","src":"//www.blogger.com/img/blogger_logo_round_35.png"}}]}});

所以e,在你的回调中,将是一个字符串,所以e.feed 将是未定义的,所以e.feed.entry 不能被访问,这将抛出你正在观察的错误

您获取的网址有误,它是 ?alt=json 而不是 ?alt=json-in-script。第一个返回JSON,所以e会是一个对象,但是后者返回一个JS脚本,所以e会是一个字符串

请注意,这仍然会崩溃,因为e 将评估为{ entry: &lt;something&gt; } 而不是{ feed: { entry: &lt;something&gt; } },因此您的e.feed.entry 将再次抛出,您可能希望将这些替换为e.entry

那么它可能仍然会崩溃,因为由于您没有向我们提供 minimal reproducible example,我们不知道您的 DOM 是什么样子,所以我们无法预测 $(e.entry[t].content.$t) 将评估为什么

【讨论】:

    猜你喜欢
    • 2014-12-05
    • 1970-01-01
    • 2022-01-05
    • 2016-07-20
    • 1970-01-01
    • 2017-07-23
    • 2014-05-01
    • 2015-08-05
    • 1970-01-01
    相关资源
    最近更新 更多