ajax怎么回调html片段

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写入到指定的地方

相关推荐