jQuery('data')返回缺少数据的'data'中的html片段

时间:2011-07-26 00:17:39

标签: javascript jquery google-chrome

我进行jQuery get调用以获取html片段并根据该数据进行一些处理

$.get($('.more a').attr('href'), function (data) {
        var $data = $(data);
        // other code using $data
    });

此处,'数据'是

<div class="topDiv"> Data goes here </div>

但$ data显示为

<div class="topDiv"> </div>

仅显示html标记,而内部文本则不显示。 IE有同样的问题(?)。但是,Firefox正确解析它。

当我发出警报($(数据).html())时,Firefox会显示带有正确html的警报,而Chrome和IE会显示缺少的文本。

由于我在localhost上运行我的项目,我无法提供html片段的URL。我使用asp.net ashx处理程序来提供html片段。基本上,当我们向处理程序发布请求时,它会根据传递给它的查询字符串参数返回一个html片段。

String content = "<html> <head> </head> <body>"+
"<div class="topDiv"> Data goes here </div>"+
"</body></html>";

context.Response.ContentType = "text/html";
context.Response.Write(content);

已解决

正如答案中所提到的,'html'片段形式不佳。 Firefox 3似乎接受了它,而Firefox 4,Chrome和IE则没有。

2 个答案:

答案 0 :(得分:0)

我怀疑这是因为<div>text</div>本身并不是真正有效的html文档。 IIRC,div只应包含块级元素。文字应该在p,a等内。因此,IE和Chrome正在根据DOM标准查杀文本,Firefox正在让它飞起来。告诉jQuery你得到的数据类型是“text”,然后使用html(textData)将内容插入你的div中。

EG:

$.ajax($('.more a').attr('href'), {
    dataType: 'text'
}).done(text) {
    $('container selector').html(text);
});

答案 1 :(得分:0)

这是怎么回事:

String content = "<html> <head> </head> <body>"+
"<div class="topDiv"> Data goes here </div>"+
"</body></html>";

用未转义的引号编译?如果你修好了,你应该摇摆不定。