这是我的前端代码:
<script type="text/javascript" src="jquery/jquery-2.0.2.js"></script>
<script type="text/javascript">
function login(){
var kidy = {user:$("#username").val(),pass:$("#password").val()};
var jsonTo=(JSON.stringify(kidy));
alert(jsonTo);
$.ajax({
url:"LongServlet",
type:"post",
data:{"myjson":jsonTo},
dataType:"json",
contentType:"application/json;charset=utf-8",
cache:"false"
});
}
</script>
这是后台的获取
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
String str=request.getParameter("myjson");
System.out.println(str);
}
/*public static UserBean getUser(String key,String jsonString){
UserBean ub=new UserBean();
try{
JSONObject jsonObject=new JSONObject();
jsonObject.get("user");
}catch(Exception e){
e.printStackTrace();
}
}*/
}不管我用什么方法为什么str获取的总是null???????。我的想法是先获得前端传入的数据,再循环的拿出来。
------解决思路----------------------
那你在js里alert出来的也没有数值吗?
------解决思路----------------------
为啥自己将数据转成json格式呢???你写了dataType:"json", 后台获取的数据格式就是json格式的,试试这个:var kidy = "user="+$("#username").val()+"&pwd="+$("#password").val(); data:{"myjson":jsonTo}, 该为data:kidy, 后台就可以获取到数据了。。var user = request.getParameter("user"); String pwd = request.getParameter("pwd");
------解决思路----------------------
哥们别乱说,getAttribute是用于获得域对象的,无论是get,post方式只要是得到传递的参数都是使用getParameter();
关于解决这个问题的办法:
首先你看看你的访问路径对不对,可不可以到达后台,如果可以到达后台,那么我有几点需要指出的地方
var kidy = {user:$("#username").val(),pass:$("#password").val()};
$.ajax({
url:"LongServlet",
type:"post",
data:{"myjson":kidy},
dataType:"json",
contentType:"application/json;charset=utf-8",
cache:"false"
});
}
后台获取:
String myjson=request.getParameter("myjson");
如果你需要转成JSOn,你可以使用JSon-lib包中的方法
JSONArray.fromObject(myjson);
你看看具体的方法,一般来说前台传递过来de json数据后台一般是用相应的类来接收
希望对你有所帮助