首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

用jQuery进行ajax与后台的交互出现有关问题

2013-03-12 
用jQuery进行ajax与后台的交互出现问题本帖最后由 cscxxx 于 2013-02-22 19:03:38 编辑刚开始学习利用jQue

用jQuery进行ajax与后台的交互出现问题
本帖最后由 cscxxx 于 2013-02-22 19:03:38 编辑 刚开始学习利用jQuery进行ajax与后台的交互,参考网上设定如下三个档,但页面一载入就发生三个错(404,4,error),填入资料提交后ie8显示在js的第46行有对象不支持方法,请教怎么解决?

使用ie8测试
jQuery-1.8.3.js
json2.js

js


$.fn.serializeObject = function() {
var o = {};
var a = this.serializeArray();
$.each(a, function() {
  if (o[this.name]) {
   if (!o[this.name].push) {
    o[this.name] = [ o[this.name] ];
   }
   o[this.name].push(this.value || '');
  } else {
   o[this.name] = this.value || '';
  }
});
return o;
};

$(document).ready(
  function() {
   jQuery.ajax( {
    type : 'GET',
    url : 'jasonServlet',
    dataType: 'json',   //返回值类型 
    success : function(data) {
    //if (data && data.success == "true") {
    if (data) {
    alert(data);
    $.each(data, function(i, item) {
     $('#info').html("共" + item.total + "条数据。<br/>"+item.success+"<br/>");
     // $.each(data.data, function(i, item) {
     $.each(item.data, function(i, item) {
       $('#info').append(
         "编号:" + item.id + ",姓名:" + item.username + ",年龄:" + item.age);
      });
     });
     
     }
    },
    error : function(XMLHttpRequest, textStatus, errorThrown) {
                        alert(XMLHttpRequest.status);
                        alert(XMLHttpRequest.readyState);
                        alert(textStatus);
                    }
   });
   $("#submit").click(function() {
    var jsonuserinfo = $.toJSON($('#form').serializeObject());
    alert(jsonuserinfo);
    jQuery.ajax( {
     type : 'POST',
     contentType : 'application/json',
     url : 'http://localhost:8081/TPVFrames/CheckUserLogin',
     data : jsonuserinfo,
     dataType : 'json',
     success : function(data) {
      alert("新增成功!");
     },
     error : function(data) {
      alert("error");


     }
    });
   });
  });



jsp

<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Spring MVC</title>
<script type="text/javascript" src="javascript/jquery-1.8.3.js"></script>
<script type="text/javascript" src="javascript/json2.js"></script>
<script type="text/javascript" src="javascript/for_jQuery_ajax_servlet.js"></script>
</head>
<body>
<div id="info"></div>
<form action="add" method="post" id="form">
id:<input type="text" name="id"/>
name:<input type="text" name="username"/>
age:<input type="text" name="age"/>
<input id="submit" type="button" value="提交"/>
</form>
</body>
</html>


servlet

public class CheckUserLogin extends HttpServlet {
private static final long serialVersionUID = 1L;
       
   
    public CheckUserLogin() {
        super();
       
    }
    
    public void init() throws ServletException {
      // Put your code here
    }

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}


protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
String userStr = readJSONString(request);// 得到requestContext
JSONObject jsonObj = JSONObject.fromObject(userStr);// 转换成JSONObject
System.out.println(jsonObj.getInt("id"));// 得到JSONObject的userId值
System.out.println(jsonObj.getString("username"));
System.out.println(jsonObj.getString("age"));

JSONObject resultJSON = new JSONObject();// 构建一个JSONObject
resultJSON.accumulate("errNum", 1);
resultJSON.accumulate("errInfo", "成功");

response.setContentType("application/x-json");// 需要设置ContentType为"application/x-json"
PrintWriter out = response.getWriter();
out.println(resultJSON.toString());// 向客户端输出JSONObject字符串
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}

public String readJSONString(HttpServletRequest request) {
  StringBuffer json = new StringBuffer();
  String line = null;
  try {
   BufferedReader reader = request.getReader();
   while ((line = reader.readLine()) != null) {


    json.append(line);
   }
  } catch (Exception e) {
   System.out.println(e.toString());
  }
  return json.toString();
}

jquery ajax
[解决办法]
我感觉这个写错了,多了个a吧。
url : 'jasonServlet',

jsonServlet
[解决办法]
到底是哪一行呀。
[解决办法]
var jsonuserinfo = $.toJSON($('#form').serializeObject());

jquery没有toJSON这个静态方法。serializeObject这个方法觉得没必要扩展了,jq已经有serialize方法将表单序列化为键值对字符串了。

//var jsonuserinfo = $.toJSON($('#form').serializeObject());
 //   alert(jsonuserinfo);
    jQuery.ajax( {
     type : 'POST',
     contentType : 'application/json',
     url : 'http://localhost:8081/TPVFrames/CheckUserLogin',
     data :$('#form').serialize()// jsonuserinfo,///直接这样就好了。。
     dataType : 'json',
     success : function(data) {
      alert("新增成功!");
     },
     error : function(data) {
      alert("error");
     }
    });

热点排行