ajax 直接一般可以返回一个数据,但是对于一个html片段,如果还是在后台慢慢拼接的话,那就太麻烦了,怎让他返回呢,其实很简单。下面我们一spring mvc为例,讲解一下:
一般我们从一个control调到页面:
@RequestMapping("templateManage2")
public String toManage2(Emp emp,Model model){
emp.setId(1);
emp.setName("haha");
model.addAttribute("emp", emp);
model.addAttribute("a", "123");
return "/empfile/emp";
}
这是服务器端跳转,这样我们就直接把值传到页面并且显示了。前段可能是一个a标签之类的直接跳转,或者JS的windows的open方法。
但是我们想过没有,如果前端用ajax请求呢?(ajax请求返回的类型是html切记)
这样ajax的function返回的是一个一大段html代码,这个html代码就是这个emp.jsp页面的代码,很好就这样。所以你可以定义一个emp.jsp的片段,并且你还可以在页面上运用你熟悉的C标签,可以把control的值带到页面上去。
看代码:
<%@ include file="/WEB-INF/include/taglib.jspf"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<c:forEach items="${userList}" var="user" varStatus="c">
<dl onclick="writeLectureRecordsInnerInput(${user.id});">
<dd>
<jy:di key="${user.userId }" className="com.mainbo.jy.uc.service.UserService" var="u"/>
<ui:photo src="${u.photo}"></ui:photo>
</dd>
<dt>
<h2>${user.username}</h2>
</dt>
</dl>
</c:forEach>
你可以直接写你所需要返回的代码片段。
function updateState(id,state,obj){
$.ajax( {
url:_WEB_CONTEXT_+'jy/lecturerecords/changeShare',// 跳转到 action
data:{
id : id,
state:state
},
type:'post',
cache:false,
dataType:'html',
success:function(data) {
var deleteFlag=$(data).find("#isdelete").val();//查找删除标记
if(deleteFlag=="0"){//分享操作
var quxiaofenxiang=$(data).find("#isshare").val();//取消分享操作
if(quxiaofenxiang!=""){
alert(quxiaofenxiang);
}
$(obj).parents("tr").html($(data).html());
}else if(deleteFlag=="1"){//删除操作
$(obj).parents("tr").remove();
}
},
error : function() {
alert("修改听课状态异常!");
}
});
} 这个function里面的data就是你要返回的html代码,你还可以用jQuery去取出里面的元素,哈哈 是不是很好用!!取出data之后,你可以直接用jQuery的html方法写入你所需要的地方。
var quxiaofenxiang=$(data).find("#isshare").val();用jQuery从返回的data里面找元素
$(obj).parents("tr").html($(data).html());jQuery写入到指定的地方