现在的位置: 首页 > 综合 > 正文

jquery的ajax返回json数据另外一个例子(不继承json-default)

2013年08月04日 ⁄ 综合 ⁄ 共 13115字 ⁄ 字号 评论关闭

 

package org.lsy.test.ajax.action;

import java.io.PrintWriter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;
import org.lsy.test.ajax.service.AjaxService;
import org.lsy.test.ajax.service.AjaxServiceImpl;
import org.rd.framework.common.container.ContainerManager;
import org.rd.framework.struts.action.BodyListAction;
import org.rd.framework.struts.action.CommonAction;
import org.rd.framework.util.ContextUtil;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class CompareDateAction  extends CommonAction {
//	private AjaxService ajaxService = (AjaxService)ContainerManager.getComponent(AjaxService.AJAX_BEAN_ID);
	
	private AjaxService ajaxService = new AjaxServiceImpl();
	private String result; 
	
	public String execute() throws Exception{
		
		return SUCCESS;
	}

	public String isRightDate() throws Exception{
		
		//ContextUtil.put("dd","df", ContextUtil.SCOPE_SESSION);
		ActionContext ctx = ActionContext.getContext();
		HttpServletRequest req=(HttpServletRequest)ctx.get(ServletActionContext.HTTP_REQUEST);
		HttpServletResponse resp=(HttpServletResponse)ctx.get(ServletActionContext.HTTP_RESPONSE);
		resp.setContentType("text/xml");
		req.setCharacterEncoding("UTF-8");
		resp.setCharacterEncoding("UTF-8");
		PrintWriter pw = resp.getWriter(); 
		
		String datefrom = ""; 
		String dateto = ""; 
		if(req.getParameter("datefrom")!=null){
			datefrom=req.getParameter("datefrom").toString();
		}
		if(req.getParameter("dateto")!=null){
			dateto=req.getParameter("dateto").toString();
		}
		//"[{'jj':'jjaa'}]"
		if(datefrom.trim().equals("")||dateto.trim().equals("")){
			pw.println("Y");
			this.result="{'re':'Y'}";
		}else if(ajaxService.isRightDate(datefrom, dateto)){
			pw.println("Y");
//			this.result="Y";
			this.result="{'re':'Y'}";
		}else{
			pw.println("N");
//			this.result="N";
			this.result="{'re':'N'}";
		}
		
		
		return NONE;
	}

	public String getResult() {
		return result;
	}

	public void setResult(String result) {
		this.result = result;
	}
}

 

 

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
	<package name="ajaxutil" extends="struts-default" namespace="/ajaxutil">
		<!-- ajaxutil begin -->
		
		<action name="isrightdate" class="org.lsy.test.ajax.action.CompareDateAction" method="isRightDate">
		     
		</action>
		
		<!-- ajaxutil end -->
	</package>
</struts>

 

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="/WEB-INF/crm_taglist.tld" prefix="crm"%>
<%@ taglib uri="/WEB-INF/component.tld" prefix="cx"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<%@ page import="java.util.*,org.lsy.test.work.model.Work"%>

<%
String path = request.getContextPath();
  String basepath=request.getScheme()+"://"+
                  request.getServerName()+":"+request.getServerPort()+
                  request.getContextPath()+"/";
%>





<input type="hidden" id="basepath" value="<%=basepath %>" />


<script src="<%=basepath %>work/jquery-1.7.1.min.js"></script>

<%-- --%>
<!-- data start -->
<script src="<%=basepath %>work/ui/jquery.ui.core.js"></script>
<script src="<%=basepath %>work/ui/jquery.ui.widget.js"></script>
<script src="<%=basepath %>work/ui/jquery.ui.datepicker.js"></script>

<link rel="stylesheet" href="<%=basepath %>work/themes/base/jquery.ui.all.css">
<link rel="stylesheet" href="<%=basepath %>work/demos/demos.css">
<!-- data end -->

<!-- tabs start -->
    <link rel="stylesheet" href="<%=basepath %>work/themes/base/jquery.ui.all.css">
	<script src="<%=basepath %>work/ui/jquery.ui.tabs.js"></script>
<!-- tabs end -->


<script>
$(function() {

	$( "#reviewdate" ).datepicker({
		showOn: "button",
		buttonImage: "<%=basepath %>work/demos/images/calendar.gif",
		buttonImageOnly: true
	});

	$( "#reviewdate" ).datepicker( "option", "dateFormat", 'yy-mm-dd');

});
$(function() {

	$( "#reviewdatefrom" ).datepicker({
		showOn: "button",
		buttonImage: "<%=basepath %>work/demos/images/calendar.gif",
		buttonImageOnly: true
	});

	$( "#reviewdatefrom" ).datepicker( "option", "dateFormat", 'yy-mm-dd');

});
$(function() {

	$( "#reviewdateto" ).datepicker({
		showOn: "button",
		buttonImage: "<%=basepath %>work/demos/images/calendar.gif",
		buttonImageOnly: true
	});

	$( "#reviewdateto" ).datepicker( "option", "dateFormat", 'yy-mm-dd');

});
//////////////////////////////////////////
$(function() {
		$( "#tabsquery" ).tabs({
			collapsible: true
		});
	});

//////////////////////////////////////////

//////////////////////////////////////////

	
</script>

<%
  List res=new ArrayList();
  if(session.getAttribute("worklist")!=null){
	  res=(ArrayList)session.getAttribute("worklist");
  }
%>


<input type="hidden" id="thelen" value="" />
<input type="hidden" id="" value="" />
<input type="hidden" id="" value="" />

<table>
  <tr width="100%">
    <td width="50%">
      
            <table border="1">
                 <tr>
                    <td>
                    <form id="lsy_test_work" name="lsy_test_work" method="post" action="">
                    
                    <!-- 查询区 start -->
                    <div class="demo">
                    <div id="tabsquery">
	                    <ul>
							<li><a href="tabsquery-1">关闭查询区</a></li>
						</ul>
                    
                    <div id="tabsquery-1">
	                    <p><strong>打开查询区</strong>11</p>
	                    <p>22
		                    <table>
		                     <tr>
		                     <td>
					                        作业标题:<input type="text" id="worktitle" value=""/>    <br>
					                        老师:        <input type="text" id="teacher"  value=""/>    <br>
					         课程名称:<input type="text" id="course"  value="">    <br>
					                        学生姓名:<input type="text" id="student"  value="">    <br>
					                        
					                        批改日期:从<input type="text" id="reviewdatefrom"    value="">    <br>
					                        到:<input type="text" id="reviewdateto"    value="">    <br>
					                                    <br>
					                        <input type="button" onclick="querywork()"  value="查询"/>
					             </td>
					             </tr>
					         </table>
				         </p>
			         </div>
			         </div>
			         </div><!-- End demo -->
			         
			         <!-- 查询区 end -->
                    
			         </form>
                    </td>
                 </tr>
                 <tr>
                    <td>
                            <table  id="maindatatable" border="1">
			  <tr>
				<th>作业标题</th>
				<th>老师 </th>
				<th>课程名称</th>
				<th>内容</th>
				<th>学生姓名</th>
				<th>班级名称</th>
				<th>id</th>
			  </tr>
			  <%
			  if(res!=null){
			    for(int i=0;i<res.size();i++){
			    	
			    	Work ww=(Work)res.get(i);
			  %>
			  <tr  onclick="f1(<%=i+1%>)">
				<td><%=ww.getWorktitle() %></td>
				<td><%=ww.getTeacher() %></td>
				<td><%=ww.getCourse() %></td>
				<td><%=ww.getWorkcontent() %></td>
				<td><%=ww.getStudent() %></td>
				<td><%=ww.getClassname() %></td>
				<td><%=ww.getId() %></td>
			  </tr>
			  <%} }%>
			 
			  
			</table>
                    
                    </td>
                 </tr>
            </table>
           
    </td>
    <td>
           <table>
              <form  name="addform" id="addform" action="<%=path%>/work/addwork.action" method=post>
              <table>
				<tr>
				  <td width="30%" align="right">作业标题:</td>
				  <td><input type="text" id="eworktitle" name="work.worktitle" value=""></td>
				  <td width="30%" align="right">老师:</td>
				  <td><input type="text" id="eteacher" name="work.teacher" value=""></td>
				</tr>
				<tr>
				  <td width="30%" align="right">课程名称:</td>
				  <td><input type="text" id="ecourse"  name="work.course"  value=""></td>
				  <td width="30%" align="right">内容:</td>
				  <td><input type="text" id="eworkcontent"  name="work.workcontent"  value=""></td>
				</tr>
				<tr>
				  <td width="30%" align="right">学生姓名:</td>
				  <td><input type="text" id="estudent"  name="work.student"  value=""></td>
				  <td width="30%" align="right">班级名称:</td>
				  <td><input type="text" id="eclassname"   name="work.classname"  value=""></td>
				</tr>
				<tr>
				  <td width="30%" align="right">批改日期:</td>
				  <td><input type="text" id="reviewdate"    value=""></td>
				  <td width="30%" align="right"></td>
				  <td></td>
				</tr>
				
				<tr>
				  <td width="30%" align="right"></td>
				  <td><input type="button" id="exinzeng"  onclick="addwork()" value="新增"></td>
				  <td><input type="button" id="exinzeng"  onclick="delwork()" value="删除"></td>
				  <td><input type="button" id="eedit"  onclick="editwork()" value="提交修改"></td>
				</tr>
	<input type="hidden" id="eid"  value="" />
              </table>
              </form>
            
            
           </table>
    </td>
  </tr>
</table>







<%
  String actiontype="";
  if(request.getAttribute("actiontype")!=null){
	  actiontype=(String)request.getAttribute("actiontype");
  }
%>

<input type="hidden" id="actiontype" value="<%=actiontype %>" />

<script>
//var basepath=$("#basepath").val();
var basepath=document.getElementById("basepath").value;
//alert(basepath);
var len = $("#maindatatable tr td").length;
var thelen=len/6;

function f1(rownum){
	//alert("dddddd");
	var str="#maindatatable tr:eq("+rownum+")";
	document.getElementById("eid").value=$("#maindatatable tr:eq("+rownum+")").children().eq(6).html();
	document.getElementById("eworktitle").value=$("#maindatatable tr:eq("+rownum+")").children().eq(0).html();
	document.getElementById("eteacher").value=$("#maindatatable tr:eq("+rownum+")").children().eq(1).html();
	document.getElementById("ecourse").value=$("#maindatatable tr:eq("+rownum+")").children().eq(2).html();
	document.getElementById("eworkcontent").value=$("#maindatatable tr:eq("+rownum+")").children().eq(3).html();
	document.getElementById("estudent").value=$("#maindatatable tr:eq("+rownum+")").children().eq(4).html();
	document.getElementById("eclassname").value=$("#maindatatable tr:eq("+rownum+")").children().eq(5).html();
	
	
	//alert($("#maindatatable tr:eq(1)").children().eq(1).html());
	//alert($("#maindatatable tr:eq(1)").children().eq(2).html());
	//alert($("#maindatatable tr:eq(1)").children().eq(3).html());
	//alert($("#maindatatable tr:eq(1)").children().eq(4).html());
	//alert($("#maindatatable tr:eq(1)").children().eq(5).html());
	//alert($("#maindatatable tr:eq(1)").children().eq(6).html());
	//alert($(this).html());
	 //alert($(this).text());
}	
	function addwork(){
		var eworktitle=document.getElementById("eworktitle").value;
		var eteacher=document.getElementById("eteacher").value;
		var ecourse=document.getElementById("ecourse").value;
		var eworkcontent=document.getElementById("eworkcontent").value;
		var estudent=document.getElementById("estudent").value;
		var eclassname=document.getElementById("eclassname").value;
		
		/*var url=basepath+"work/addwork.do?worktitle="+eworktitle+
				"&teacher="+eteacher+
				"&course="+ecourse+
				"&workcontent="+eworkcontent+
				"&student="+estudent+
				"&classname="+eclassname;*/
		//document.getElementById("tt").value=url;
		//window.location.href=url;
		document.addform.submit();
	}
	function delwork(){

		var worktitle=document.getElementById("eworktitle").value;
		var teacher=document.getElementById("eteacher").value;
		var course=document.getElementById("ecourse").value;
		var student=document.getElementById("estudent").value;
		
		var workcontent=document.getElementById("eworkcontent").value;
		var classname=document.getElementById("eclassname").value;
		var id=document.getElementById("eid").value;
		
		var url=basepath+"work/delwork.action?worktitle="+worktitle+
		"&teacher="+teacher+
		"&course="+course+
		"&student="+student+
		"&workcontent="+workcontent+
		"&classname="+classname+
		"&id="+id;
		//alert("del--"+url);
		window.location.href=url;
	}
	function editwork(){
		var worktitle=document.getElementById("eworktitle").value;
		var teacher=document.getElementById("eteacher").value;
		var course=document.getElementById("ecourse").value;
		var student=document.getElementById("estudent").value;
		
		var workcontent=document.getElementById("eworkcontent").value;
		var classname=document.getElementById("eclassname").value;
		
		var id=document.getElementById("eid").value;
		
		var url=basepath+"work/editwork.action?worktitle="+worktitle+
		"&teacher="+teacher+
		"&course="+course+
		"&student="+student+
		"&workcontent="+workcontent+
		"&classname="+classname+
		"&id="+id;
		window.location.href=url;
	}
    function querywork(){

		var worktitle=document.getElementById("worktitle").value;
		var teacher=document.getElementById("teacher").value;
		var course=document.getElementById("course").value;
		var student=document.getElementById("student").value;
		
		var url=basepath+"work/querywork.action?worktitle="+worktitle+
		"&teacher="+teacher+
		"&course="+course+
		"&student="+student;
		//alert("查询--"+url);
		window.location.href=url;
	}
    
    
    var actiontype=document.getElementById("actiontype").value;
    if(actiontype=='otherquery'){
    	var url=basepath+"work/querywork.action";
		window.location.href=url;
    }

////////////////////////////////////////////////

$(document).ready(function(){
	//hideCol(1);//隐藏第二列
	//$('table td').find('td:eq(1)').hide();
	//$('table tr').find('td:eq(1)').hide();
	//$('#maindatatable td').find('td:eq(0)').hide();
	//$('#maindatatable tr').find('td:eq(0)').hide();
	
	var len = $("#maindatatable tr td").length;
	var thelen=len/6;
	//var len = $("#mm tr td").length;
	//alert(len/6);
	//alert("表行数"+thelen);
	$("#thelen").val(thelen);
	
	
	$("#reviewdatefrom").change( function () { 
		
		var date1=$("#reviewdatefrom").val();
		var date2=$("#reviewdateto").val();
		
		var url=basepath+"ajaxutil/isrightdate.action?reviewdatefrom="+date1+
		"&reviewdateto="+date2;
		
		alert($("#reviewdatefrom").val()+"\r"+url); 
		
		jQuery.ajax( {  
			        url:url,  
			        type:'post',  
			        async:false,  
			        dataType: "text",
			        //data:'sql='+'hkhkhhhkhk',  
			        success:function(result){
			        	alert("from-----333----"+result); 
			            if(""!=result){  
			                 alert("from---------"+result);  
			            }  
			       }  
			     }); 
	});//end blur
	
	$("#reviewdateto").change( function () { 
		var date1=$("#reviewdatefrom").val();
		var date2=$("#reviewdateto").val();
		
		var url=basepath+"ajaxutil/isrightdate.action?reviewdatefrom="+date1+
		"&reviewdateto="+date2;
		
		alert($("#reviewdateto").val()+"\r"+url);
		
		$.get(url, function(result){
			  alert("Data hhss: " + result);
		});//end get
	
	});//end blur
	
	
	
});//end ready
/////////////////////////////////////////
</script>


 

 

 

在这个例子中private String result;其实是没有用的,我们一般会这样配置

<struts>
 <package name="ajaxutil" extends="json-default" namespace="/ajaxutil">
  <!-- ajaxutil begin -->
  
  <action name="isrightdate" class="org.lsy.test.ajax.action.CompareDateAction" method="isRightDate">
      
       <result name="success" type="json">
           <param name="root">result</param> 
       </result>
  </action>
  
  <!-- ajaxutil end -->
 </package>
</struts>

 

并且ajax这样写:

jQuery.ajax( { 
          
url:url
           type:'post', 
           async:false, 
           dataType: "json",
           //data:'sql='+'hkhkhhhkhk', 
           success:function(result){
            alert("from-----333----"+result);
               if(""!=result){ 
                    alert("from---------"+result); 
               } 
          } 
        });

这样我们把要返回的值指定放到java类的resuest变量中,在xml指定返回成功后去这个参数的值给ajax的

回调函数。

而在我这个例子中,我们继承的是extends="struts-default",没有返回,在java类中返回NONE。

ajax中dataType: "text",这样返回的内容就不是到private String result;了,而是pw.println("Y");

(pw是PrintWriter pw = resp.getWriter();),返回结果用PrintWriter输出给回调函数。

 

 

抱歉!评论已关闭.