JQuery .ajax异步请求,该怎么解决
JQuery .ajax异步请求
通过一个按钮想测试下AJAX及JSON
前端代码段如下:
后端代码片段为:
点击页面的测试按钮时,可以看到后台有日志输出:
2012-05-28 16:55:24 734 INFO JsonAction:78 - user1 - m - 25
2012-05-28 16:55:24 734 INFO JsonAction:78 - user2 - f - 21
可是前端貌似没能收到后端返回的JSON对象,因为总提示失败时的方法信息 Error!
大家帮忙看看哈
------解决方案--------------------
这个时候你应该借组火狐的firebug,客户端返回什么数据都可以看到的。
至于你这里,貌似在服务器端,你返回的东西是不是错了哦。JSONObject.fromObject(book);应该是返回的这个转换之后的结果吧?你直接返回字符串,java中'是要加上\的,\'这样才正确。
------解决方案--------------------
严格的json要求用双引号来包裹键值
比如
{"name": "Tom"}
------解决方案--------------------
可能是json的格式问题。
你也可以先返回一个简单的字符串试试,看看行不行。
------解决方案--------------------
可能是json的格式问题。
你可以先返回一个简单的字符串试试看,如果可以的话,说明是json的写法有问题。
------解决方案--------------------
json格式问题 你试试
var userdata=[{"name":"user1", "sex":"m", "age":"20"},
{"name":"user2", "sex":"f", "age":"21"}];
通过一个按钮想测试下AJAX及JSON
前端代码段如下:
<script type="text/javascript">
$(document).ready(function(){
$("#btncheck").click(function(){
var userdata=
{
"users":
[
{"name":"user1", "sex":"m", "age":"20"},
{"name":"user2", "sex":"f", "age":"21"}
]
};
var user = JSON.stringify(userdata);
$.ajax({
url: '/webtemplate/site.ajax.json.do?method=validate',
type: 'post',
data: 'user=' + user,
dataType: 'json',
timeout: 1000,
error: function()
{
alert('Error!');
},
success: function(result)
{
alert(result);
}
});
});
});
</script>
</head>
<body>
<form action="#" method="post">
<input type="button" id="btncheck">JQueryJson测试</input>
</form>
</body>
</html>
后端代码片段为:
public ActionForward validate(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) throws Exception
{
String myJson = request.getParameter("user");
// 转化为JSON对象
JSONObject json = new JSONObject(myJson);
// 获取对应的数组
JSONArray array = json.getJSONArray("users");
for (int i = 0; i < array.length(); i++)
{
// 获取对应数组的每一个对象
JSONObject thisJson = (JSONObject) array.get(i);
log.info(thisJson.get("name") + " - " + thisJson.get("sex") + " - " + thisJson.get("age"));
}
String book = "{'name':'chinese','publish':'china','price':30}";
JSONObject.fromObject(book);
response.setContentType("application/x-json");
PrintWriter out = response.getWriter();
out.println(book.toString());
out.flush();
out.close();
return null;
}
点击页面的测试按钮时,可以看到后台有日志输出:
2012-05-28 16:55:24 734 INFO JsonAction:78 - user1 - m - 25
2012-05-28 16:55:24 734 INFO JsonAction:78 - user2 - f - 21
可是前端貌似没能收到后端返回的JSON对象,因为总提示失败时的方法信息 Error!
大家帮忙看看哈
------解决方案--------------------
这个时候你应该借组火狐的firebug,客户端返回什么数据都可以看到的。
至于你这里,貌似在服务器端,你返回的东西是不是错了哦。JSONObject.fromObject(book);应该是返回的这个转换之后的结果吧?你直接返回字符串,java中'是要加上\的,\'这样才正确。
------解决方案--------------------
严格的json要求用双引号来包裹键值
比如
{"name": "Tom"}
------解决方案--------------------
可能是json的格式问题。
你也可以先返回一个简单的字符串试试,看看行不行。
------解决方案--------------------
可能是json的格式问题。
你可以先返回一个简单的字符串试试看,如果可以的话,说明是json的写法有问题。
------解决方案--------------------
json格式问题 你试试
var userdata=[{"name":"user1", "sex":"m", "age":"20"},
{"name":"user2", "sex":"f", "age":"21"}];