在ajax请求中使用'post'时获取500内部服务器

时间:2014-09-08 16:12:53

标签: jquery ajax json jsp

我在我的示例项目中使用jquery处理JSP和ajax。我正在从客户端向服务器发送json数据,作为响应,我从服务器获取另一个json。如果我使用' get'方法。如果我使用' post'然后我得到500内部服务器错误。 我的示例客户端代码是

jQuery.ajax({
    url : "server.jsp",
    type : "POST",
    data:{req_data:JSON.stringify({"user_name":UserName,"url":URL})},
    async : false,
    dataType: 'json',
    contentType : "application/json; charset=utf-8",
    success : function(data) {
      console.log(data);
    },
    error : function() {
      console.log("error");
    }

我的示例jsp服务器端代码是

<%@ page import="java.io.PrintWriter"%>
<%@ page import="org.json.simple.JSONObject"%>
<%@ page import="org.json.simple.JSONValue"%>

request.setCharacterEncoding("utf8");
response.setContentType("application/json");
PrintWriter outt = response.getWriter();

JSONObject reqjsonObj = (JSONObject)JSONValue.parse(request.getParameter("req_data"));
String uname=reqjsonObj.get("user_name").toString();
String url=reqjsonObj.get("url").toString();
JSONObject resjsonObj = new JSONObject();
resjsonObj.put("name",uname);
resjsonObj.put("url",url);
out.print(resjsonObj);
out.flush();
out.close();

如果我使用&#39; GET&#39;而不是&#39; POST&#39;在ajax请求中。我在这里可能犯的错误是什么?

2 个答案:

答案 0 :(得分:0)

尝试检查网址:

 url : "server.jsp",

也许出于某种原因,GET能够找到jsp。出于测试目的,尝试声明所有URL,例如:

 url : "http://localhost:8080/server.jsp"...

答案 1 :(得分:0)

因为您正在请求正文中发送json。您无法在请求中使用getParameter()来获取json。

相反,您可以使用getReader()getInputStream()来检索请求的正文,然后为json解析它。

另一种方法是使用嵌入式json序列化的参数。在这种情况下,您可以使用getParameter()。如何序列化数据,请参阅$.serialize()