ajax请求问题,到底哪里错了

$(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]