$(function(){
alert("预加载...");
$("#addTask").click(function(){
$.ajax({
type: "POST",
url: "yujiazaiSelectTask.action?taskType=NYGRADE",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(jsonStr){
alert(jsonStr);
}
});
});
});
楼主试试:
----Struts2
//将json数据写入返回到客户端页面
HttpServletResponse httpServletResponse = ServletActionContext.getResponse();
httpServletResponse.setCharacterEncoding("UTF-8");
httpServletResponse.setContentType("text/x-json;charset=UTF-8");
PrintWriter pw = httpServletResponse.getWriter();
pw.print(jsonStr);
[code="java"]outPrintJson(jsonToString(goodList));
protected String jsonToString(Object object){
String jsonStr =null;
if(object instanceof Collection || object instanceof Object[]){
jsonStr = JSONArray.fromObject(object).toString();
}else{
jsonStr = JSONObject.fromObject(object).toString();
}
return jsonStr;
}
protected void outPrintJson(String jsonStr){
try {
PrintWriter out = getServletResponse().getWriter();
out.print(jsonStr);
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}[/code]
//getResponse().getWriter().write(selectTaskListJson.toString());
这行代码怎么注释了?
可能是你的json格式问题,把dataType去掉,应该就可以正确运行了。
或者在ajax中加一个error函数,就能看到报错信息了。
我咋感觉错误是因为你把参数写在url上,你的后台估计并没有返回正确的数据,我猜的
url: "yujiazaiSelectTask.action?taskType=NYGRADE",
试试这样
$.ajax({
type: "POST",
url: "yujiazaiSelectTask.action",
data : {taskType : "NYGRADE"}
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(jsonStr){
alert(jsonStr);
}
});
});
});
你好这是我以前测试过的原码,可以正常运行,你可以参考.
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
在火狐下用firebug抓下包,看下response返回的什么
楼主试试:
byte[] jsonBytes = jsonStr.getBytes("utf-8");
response.setContentType("text/html;charset=utf-8");
response.setContentLength(jsonBytes.length);
response.getOutputStream().write(jsonBytes);
还有 contentType: "application/json; charset=utf-8", 可以去掉,没什么用。
什么错 ?
alert(jsonStr); 提示是Object?
jsonStr这个是json对象不是json字符串。
需要调试看看,后台有没有收到请求,返回的string是什么,格式对否等等
1、首先确认是否有进入后台
2、如果进入了后台,确定你的返回值是否有数据,System.out.println("");
3、首先那先乱七八的东西,都去掉,检查JS是否有错,用firebug
[code="java"]
$.ajax({
type: "POST",
url:url,
async: false,
cache: false,
success:function(data){
alert(data);
},error:function(){
alert("请求错误");
}
});
[/code]