【问题标题】:jquery selector function failing on ajax reponse html datajquery选择器函数在ajax响应html数据上失败
【发布时间】:2013-05-10 19:05:13
【问题描述】:

在我的 jquery 代码中,我使用 ajax get 函数来获取页面的 html 代码。然后我想从中获取某个元素,但是当我尝试这样做时,jquery 给出了这个错误:

SCRIPT5022: Syntax error, unrecognized expression:

在 html 字符串上。

$.ajax({
    url: myURL,
    dataType: 'html',
    success: function (data) {
        g = $('#MainLeftCell', $(data)).html(); // ERROR occurs here
        alert(g);
    },
    error: function (XMLHttpRequest, textStatus, errorThrown) {
        alert("An error occured when searching.");
    }
});

我认为这是因为 html 字符串中可能存在 jquery 解析器无法识别的奇怪代码序列。获取它的页面是 SharePoint 页面。

有办法解决这个问题吗?

【问题讨论】:

  • alert(data) 给你什么?
  • 没有看到data的内容就很难说什么。是否可以至少分享其中的一部分?
  • 我试过alert(data),效果很好,我可以看到整个代码。
  • 您是否有时间问题?我遇到过传递给 success() 的数据不是真正成功的数据的情况。尝试 async:false 看看你的结果是否有任何不同,它可能会给你一个线索。 jquery 选择器看起来不错。
  • 能不能修改代码,我不知道怎么写。

标签: jquery ajax string parsing


【解决方案1】:

很可能您的 HTML 不适用于 $() 方法。先传给$.parseHTML

var g = $('#MainLeftCell', $.parseHTML(data)).html();

如果这消除了错误但仍然不起作用,很可能#MainLeftCell 是顶级元素,您必须使用 .filter 来获取它。

var g = $($.parseHTML(data)).filter('#MainLeftCell').html();

更通用的解决方案是

var g = $("<div>").html(data).find("#MainLeftCell").html();

【讨论】:

    【解决方案2】:

    你有一个语法错误......你为什么不使用find()..它的清洁剂

    g = $(data).find('#MainLeftCell').html();
    

    【讨论】:

    • 错误可能发生在这里:$(data) 由于 无效 html不是以 &lt; 开头的 html
    • @omega 如果不以&lt;开头,则不能传递给$()
    猜你喜欢
    • 1970-01-01
    • 2017-08-26
    • 2011-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-21
    相关资源
    最近更新 更多