jquery选择器函数在ajax响应html数据上失败

时间:2013-05-10 19:05:13

标签: jquery ajax string parsing

在我的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.");
    }
});

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

有没有办法解决这个问题?

2 个答案:

答案 0 :(得分:3)

您的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();

答案 1 :(得分:0)

你有语法错误...为什么不使用find() ..更清洁

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