我使用ajax从Web API获取项目,然后尝试将该项目的属性分配给表格:
function find() {
var id = $('#contentID').val();
$.getJSON(uri + '/' + id)
.done(function (data) {
fillTable(data);
})
.fail(function (jqXHR, textStatus, err) {
$('#content').text('Error: ' + err);
});
}
function fillTable(item) {
document.getElementById("mybody") += "<td id = \"td1\" runat=\"server\">" + item.contentType + "</td> <td id=\"td2\" runat=\"server\">" + item.contentID + "</td></tr>";
}
我在html中有这个表:
<table id="example" class="responstable">
<thead>
<tr>
<th data-th="Driver details"><span>Timestamp</span></th>
<th>Content Type</th>
<th>Task Name</th>
<th>Task Version</th>
<th>Task State</th>
</tr>
</thead>
<tbody id="mybody" runat="server">
<tr>
</tr>
</tbody>
</table>
我知道我正在获取JSON对象,因为我将其属性打印到屏幕上并且打印得很好。我不明白为什么javascript不会将它们附加到表中。
答案 0 :(得分:2)
赋值到函数调用的结果没有意义,并且被禁止,并且有一个运行时异常。
=
(赋值)运算符以及+=
,等派生词需要运算符的左侧是Reference Specification Type的表达式。也就是说,lhs = e
仅在与&#34;变量或属性表达式&#34;一起使用时才有效。为lhs
。
引用类型用于解释诸如delete,typeof和赋值运算符[includes =,+ =等]之类的运算符的行为。例如,赋值的左侧操作数应生成引用[规范类型表达式]。
JavaScript可以将值分配回适当的变量/属性。如果无法进行此类分配,则会抛出运行时错误,例如尝试在=
运算符的左侧使用函数调用时。
(这是我对++处理的答案的改编。)
此特定实例可通过以下满足上述要求来解决,因为innerHTML
是属性。
var elm = document.getElementById("mybody");
elm.innerHTML += "the new stuff";
(但是,更好的是使用正确的DOM操作,而不是HTML修改。)