对于XHTML,jQuery append get result失败

时间:2013-03-17 18:16:46

标签: jquery ajax web-services append

当我尝试append() $.get()到容器元素的XHTML结果时,

$.get("my-webservice", function(data){
    $("#some-container").append(data);
  });

我收到错误:

TypeError: 'null' is not an object (evaluating 'e.ownerDocument')

我也尝试过:

$("#some-container").append($(data));

并得到同样的错误。 load()工作正常,所以我知道网络服务正在返回好的数据:

$("#some-container").load("my-webservice");

在webservice端,如果我在返回$.get()之前将XHTML编码为字符串,则一切都按预期工作。 append()文档说它接受一个字符串,DOM元素或jQuery对象 - 我怀疑我得到了一些错误的东西。有什么建议吗?

webservice只返回一些简单的bootstrap XHTML:

<div class="row">
  <div class="span5">Div stuff</div>
  <div class="span4">More div stuff</div>
</div>

2 个答案:

答案 0 :(得分:4)

jQuery正在尝试对使用$.get函数时返回的文档类型做出最佳猜测,而不指定dataType。作为$.get函数的最后一个参数,请尝试添加“html”以指定dataType。有关详细信息,请参阅jQuery documentation

$.get("my-webservice", function(data){
    $("#some-container").append(data);
}, 'html');

答案 1 :(得分:0)

尽管调试控制台建议浏览器将webservice输出视为DOM对象,但我最终意识到内容类型未正确设置。对Web服务进行的这些更改中的任何一个或两个都会导致jQuery正确猜测dataType

  1. 将回复内容类型设置为text/html
  2. 在回复之前输出<!DOCTYPE html>