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);

              }
        });
    });
}); 
tianjie_cs2
tianjie_cs2 //将json数据写入返回到客户端页面 getResponse().getWriter().write(selectTaskListJson.toString()); ------- 试一试这个(struts2) HttpServletResponse httpServletResponse = ServletActionContext.getResponse(); httpServletResponse.setCharacterEncoding("UTF-8"); httpServletResponse.setContentType("text/x-json;charset=UTF-8"); PrintWriter pw = httpServletResponse.getWriter(); pw.print(jsonStr);
8 年多之前 回复

11个回答

楼主试试:
----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]
dashabenmao
dashabenmao 你先看看 你 的JSON对不对,在firedebug 下 在看看JS拿地方
8 年多之前 回复
yellowxiaotian
回归初心,一直在路上,不断学习 我记得以前那样写可以的,但是现在没有success呢?
8 年多之前 回复
dashabenmao
dashabenmao 在你的 ajax 外层 加上 试试
8 年多之前 回复
dashabenmao
dashabenmao $.ajax({ type: "POST", url: "selectMain.action", dataType:'json', success:function(data){ alert(data) }); } },'json'); 有时候你需要配置下 'json'
8 年多之前 回复

//getResponse().getWriter().write(selectTaskListJson.toString());
这行代码怎么注释了?

zyn010101
zyn010101 后台代码执行了么?
8 年多之前 回复
yellowxiaotian
回归初心,一直在路上,不断学习 让我把json格式的内容直接赋给了jsonStr,并给jsonStr set和get方法,直接在页面上获取,但是ajax也没有执行成功
8 年多之前 回复

可能是你的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);

  } 

});
});
});

feizhuzi
feizhuzi 后台flush一下
8 年多之前 回复

你好这是我以前测试过的原码,可以正常运行,你可以参考.
<%@ 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是什么,格式对否等等

共11条数据 1 尾页
立即提问