2014-09-08 2 views
0

Я работаю с JSP и ajax, используя jquery в моем примере проекта. Я отправляю данные json от клиента к серверу, и в ответ я получаю еще один json от сервера. Все работает нормально, если я использую метод get. Если я использую 'post', тогда я получаю 500 Internal server error. Мой образец стороне клиента кодПолучение 500 внутренних серверов при использовании «post» в ajax-запросе

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

Все работает отлично, если я использую «GET» вместо «POST» в запросе Ajax. Какова возможная ошибка, которую я здесь делаю?

+0

Непрерывно отлаживать его :(... Одна вещь, которую я наблюдал. При отправке через «get» в сервере request.getParameter («req_data») есть данные, но при отправке через «сообщение» он равен нулю. Почему? Любая идея? – user51854

+0

попробуйте удалить «contentType:» application/json; charset = utf-8 »,' –

+0

Спасибо @ ᾠῗᵲ ᄐ ᶌ. – user51854

ответ

0

Попробуйте проверить URL:

url : "server.jsp", 

Может быть по какой-то причине ГЭТ может найти СПЯ. В целях тестирования попробуйте объявить весь URL-адрес:

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

Потому что вы отправляете json в тело запроса. Вы не можете использовать getParameter() по запросу, чтобы получить json.

Вместо этого вы можете использовать getReader() или getInputStream(), чтобы получить тело запроса, а затем проанализировать его для json.

Другой подход - использовать параметр, который вы сериализуете со встроенным json. В этом случае вы можете использовать getParameter(). Как сериализовать данные см. $.serialize().

Смежные вопросы