以下代码给我一个意外的行为。当ajax调用中的dataType是json时,它会在这种情况下返回错误并执行.fail路径。第$("#greetingsBlock" ).html(stuff.responseText);
行正确执行,并使用更新后的html正确填充results.html中的<div th:fragment="greetingsList" class="results-block">
。
但是,读取另一个链接后,我从ajax调用中删除了dataType: "json",
以修复失败问题,并且返回已正确映射到.done(function( stuff )
。奇怪的是,即使$("#greetingsBlock").html(stuff.responseText );
与.fail案例中的stuff.responseText
相同,行$.ajax({
type : "POST",
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
dataType: "json",
contentType: "application/json; charset=utf-8",
data : data,
url: url
})
.done(function( stuff ) {
$("#greetingsBlock").html(stuff.responseText );
})
.fail(function(stuff) {
$("#greetingsBlock" ).html(stuff.responseText);
});
也不会更新html。我在调试器中检查了两个案例。被调用的控制器方法在两种情况下都是相同的,并且没有问题地返回。我有点难过这个。
我在我的应用程序中使用jquery 1.9.2,Thymeleaf和Spring MVC
<div th:fragment="greetingsList" class="results-block">
<h3>Greetings list</h3>
<form id="toDelete" th:object="${greetingWrapper}" method="post">
<table>
<tr>
<th>Delete?</th>0
<th>ID</th>
<th>Message</th>
<th>Date Created </th>
</tr>
<tr th:each="greeting, rowStat : *{greetings}" th:class="${rowStat.odd}? 'odd'">
<td><input type="checkbox" th:checked="${greeting.delete}" th:field="*{greetings[__${rowStat.index}__].delete}" name="delete"/></td>
<td><input type="text" th:field="*{greetings[__${rowStat.index}__].id}" name="id" readonly="readonly" /></td>
<td><input type="text" th:field="*{greetings[__${rowStat.index}__].content}" name="content" readonly="readonly" /></td>
<td><input type="text" th:field="*{greetings[__${rowStat.index}__].dateCreated}" name="dateCreated" readonly="readonly" /></td>
</tr>
</table>
<button id="deleteGreetings" name="deleteGreetings"
th:onclick="'javascript:deleteTheGreetings()'" type="button" >Delete Greeting(s)</button>
</form>
</div>
results.html
{{1}}