jquery $ .ajax .done .fail给出了意想不到的行为

时间:2015-09-18 18:41:38

标签: jquery ajax behavior

以下代码给我一个意外的行为。当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}}

0 个答案:

没有答案