将json对Ajax PUT的响应重定向到JSP中,由EL解析

时间:2016-05-05 15:14:46

标签: javascript jquery json ajax jsp

有点背景知识: (我是学生,所以请耐心等待。) 使用jQuery,我已经为REST Web服务制定了一个Ajax PUT请求。

$.ajax({
    type: "PUT",
    url: putURI,
    dataType: "json",
    cache: false,
    headers: {          
        Accept : "application/json; charset=utf-8",         
        "Content-Type": "application/json; charset=utf-8"   
    },
    success: function (){
        $.getJSON(baseURI, function(data){
             $.each(data, function (i, task) {
                 alert(task.description);
                 row = "<tr><td id='" + task.description + "'></td></tr>";
                 $("#tasksTableBody tr:last").after(row);
            });
        });
    },
    error: function (request, status, error) {
        alert(request.responseText);
        alert(status);
        alert(error);
    }
});

如果可能,我想将响应重新路由到我的JSP,其中有EL和jstl来创建表的行,正好在我想要的位置。

<tbody id="tasksTableBody">
   <core:forEach items="${allTasks}" var="task">
   <tr>
      <td id="desc${task.id}">
          ${task.description}
      </td>
      <f:parseDate value="${duedate}" pattern="yyyy-MM-dd" var="duedate" />
      <td id="due${task.id}" value=duedate>
          <f:parseDate value="${duedate}" pattern="yyyy-MM-dd"/>
      </td>
      <td id="done${task.id}" data-isDone="${task.isdone}">
          <core:set var="isdone" value="${task.isdone}"/>
          <core:if test="${isdone == true}">
             <img src="images/checked.png"/>
          </core:if>
      </td>
      <td>
         <img src="images/edit-icon.png" onclick="editItem(${task.id})" />
      </td>
      <td>
        <img src="images/delete.png" onclick="deleteItem(${task.id})" />
      </td>
    </tr>
  </core:forEach>
  </tbody>

这是否可能,或者我是否需要坚持'成功'功能并尝试使其有效?

1 个答案:

答案 0 :(得分:0)

返回HTML而不是JSON是一种有效的方法,通常比在客户端处理JSON更简单。

让你的控制器/ servlet处理PUT转发到JSP,然后使用JQuery用返回的HTML更新一些元素。所以这看起来像是:

$.ajax({
    type: "PUT",
    url: putURI,
    dataType: "json",
    cache: false,
    headers: {          
        Accept : "application/json; charset=utf-8",         
        "Content-Type": "application/json; charset=utf-8"   
    },
    success: function (html){
        $( "#results" ).append( html ); //append response to an element with id 'results'

        // or

        $( "#results" ).html( html ); //replace contents of element with id 'results'
    },
    error: function (request, status, error) {
        alert(request.responseText);
        alert(status);
        alert(error);
    }
});