ajax出现错误的原因

陷阱1 需要注意的是如果一般简单实用 传回类型是

text 那么不要写

response.setContentType("text/xml;charset=UTF-8");


传回XML时候才需要加

其他时候用的 response.setContentType("text/html;charset=UTF-8");


 

 

原始AJAX用法

var xmlhttp; //全局变量
 //创建XMLHttpRequest对象
 function GetXmlHttp() {
  if (window.XMLHttpRequest) {
   //针对FireFox ,IE7,IE8 
   xmlhttp = new XMLHttpRequest();
   //针对一些小型浏览器的bug
   if (xmlhttp.overrideMimeType) {
    xmlhttp.overrideMimeType("text/xml");
   }

   //针对IE6,IE5,和其他浏览器
  } else if (window.ActivXObject) {
   var activexName = [ "MSXML2.XMLHTTP", "Microsoft.XMLHTTP" ];
   for ( var i = 0; i < activexName.length; i++) {
    try {
     xmlhttp = new ActiveXObject(activeName[i]);
     break;
    } catch (e) {
     alert("您的浏览器不支持AJAX技术");
    }
   }

  }
  return xmlhttp;
 }

 //主调函数,以当前页作为参数
 function AjaxTest(currpage) {
  GetXmlHttp(); //获取XMLHttpRequest对象
  xmlhttp.onreadystatechange=callback; //设置异步的回调函数 【不要加括号】PS:千万不要拼错onreadystatechange
  xmlhttp.open("get", "AjaxServer.do?currpage=" + currpage, true);//发送请求
  xmlhttp.send(null);
 }

 //回调函数
 function callback() {
  //判断对象的状态是否已经交互完成
  if (xmlhttp.readyState != 4) {
   div.innerHTML = "<font color='red'>数据加载中...</font>";
  } else {
   //判断http是否交互成功
   if (xmlhttp.status == 200) {
    var xmlDOM = xmlhttp.responseXML;
    parse(xmlDOM);
   }
  }
 }


jquery中用法

$.post("Third.do",{queryString :+ id }, function(data) {
  if (data.length > 0) {
   var jobs = jQuery.parseJSON(data);
   $('#Select1').fadeIn(); //初始化 清除原来数据
   //在回调函数之内给页面赋值
   inser(jobs.third,sel);
  }
 });


json JAVA端写法

/**
 * @author chen_s 
 * @param info
 * @category 基础jquery 传送 json数据Demo
 * 
 **/
public class JsonServer extends HttpServlet {
 //数据库全局变量 方便关闭
 Connection conn = null;
 PreparedStatement pstmt = null;
 ResultSet rs = null;
 public void doGet(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException {

 }

 public void doPost(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException {

  String s = request.getParameter("info");
  //有json参数传递过来
  if(s!=null&&!s.equals(null)){
   JSONObject job = JSONObject.fromObject(s);
   JSONArray job2 = (JSONArray) job.get("jobs");
   System.out.println(job2.size());
   for(int i=0;i<job2.size();i++){
    JSONObject o = (JSONObject) job2.get(i);
    System.out.println(o.get("sname"));

   }
  }
  //字符集编码
  response.setContentType("text/html;charset=UTF-8");
  response.setHeader("Cache-Control","no-cache");
  
  //需要JSON.jar包
  JSONObject json = new JSONObject();   
  try{   
   JSONArray members = new JSONArray();   
   //数据库查询数据
   PageService ps = new PageService();
   //当前页
   int currpage = Integer.parseInt(
     request.getParameter("currpage") == null ? "1" : request.getParameter("currpage"));
   //总的记录数
   int total = ps.getResultCount("person");
   //分页单位
   int pagesize = 6;
   //Page类对象
   PageBean page = new PageBean(total,currpage,pagesize);
   String sql = "select * from person order by sid limit ?,?";
   rs = ps.getResultSet(page);
   //结果集拼接成JSON数据
   while(rs.next()){
    JSONObject member = new JSONObject(); 
    member.put("sid",rs.getInt("sid"));
    member.put("sname", rs.getString("sname"));   
    member.put("sage", rs.getString("sage"));   
    members.add(member);  
   }
   //手动插入测试数据
   //   for(int i=0;i<3;i++){   
   //    JSONObject member = new JSONObject();  
   //    member.put("sid",i);
   //    member.put("sname", "chen"+i);   
   //    member.put("sage", "23");   
   //    members.add(i, member);  
   //   }   
   json.put("jobs", members); 
  }catch(Exception e){   
   e.printStackTrace();   
  } finally{
   BaseService bs = new BaseService();
   bs.close(rs);
   bs.close(pstmt);
   bs.close(conn);
  }
  System.out.println(json.toString());  

  //  //手动拼接 json无需jar包
  //  String jsonStr ="{\"jobs\":[{\"sid\":0,\"sname\":\"23\",\"sage\":\"chen0\"}" +
  //    ",{\"sid\":1,\"sname\":\"23\",\"sage\":\"chen1\"},{\"sid\":2,\"sname\":" +
  //    "\"23\",\"sage\":\"chen2\"},{\"sid\":3,\"sname\":\"23\",\"sage\":\"chen3\"}]}";
  response.getWriter().write(json.toString());   

 }
}


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值