2013-09-23 3 views
1

Я хочу, чтобы получить json объект из success в качестве ajax этого является то, что я сделал до сих пор
Ajax с использованием Gson

Мой выпадающий список

<select id="testers_team" class="tester_team"> 
    <optgroup label="Current Value"> 
     <option><c:out value="${info.team}"></c:out></option> 
    </optgroup> 
    <optgroup label="Teams"> 
     <c:forEach var="team" items="${requestScope.testers}"> 
      <option value="${team.key}">${team.key}</option> 
     </c:forEach> 
    </optgroup> 
</select> 

Это один мой Ajax, то select, приведенный выше, повторяется в цикле, поэтому я должен использовать каждый, чтобы узнать, с какими из них я работаю (только для того, чтобы сообщить вам, ребята)

$('.tester_team').each(function(){ 
    $(this).change(function() { 

      $.ajax({ 
     url: 'Analysis', 
     type: 'POST', 
     dataType: 'json', 
     data: {team: $(this).val()}, 
     success: function(data){ 
      alert(data); // alert not working 

     } 
      }); 

    }); 
}); 

Я использую Gson на мой сервлет код Херес:

String team = request.getParameter("team"); 
HashMap<String, ArrayList<String>> testerList 
       = new UsersDAO().getTestersOfAllTeams(); 
ArrayList<String> testers = testerList.get(team); 

if(testers != null) 
{ 
    response.setContentType("application/json"); 
    response.setCharacterEncoding("UTF-8"); 
    try 
    { 
     response.getWriter().write(new Gson().toJson(testers)); 
     //this one is printing so that means it actually succeed to parse? 
     System.out.println(team); 
    } 
    catch(IOException e) 
    { 
     // just want to test out if it really failed 
     System.out.println("failed"); 
     log.debug("Unable to get parse request", e); 
    } 
} 

Проблема заключается в сценарии с Ajax не запускает функцию alert(data);, когда я изменить выпадающий список, что это проблема с моим код? или я неправильно использую коды?

+1

Вы печатаете значения консоли, вы должны напечатайте ответ json с PrinterWriter внутри Servlet. Можете ли вы опубликовать весь код сервлета для проверки вызова сервлета? Если не печатается, возможно, у него есть ошибки – Jessai

+0

Когда я запускаю коды, нет трассировки стека, и я уже размещаю весь почтовый код сервлета, связанный с проблемой. Не беспокойтесь о HashMap, это не пусто. «Println» уже подтвердил это мне. О PrintWriter Я не планирую писать код «html» из сервлета, если я правильно вас понимаю. – newbie

ответ

0

Глупый меня, хорошо я нашел ответ изменить код из сервлета:

if(testers != null) 
{ 
    response.setContentType("application/json"); 
    response.setCharacterEncoding("UTF-8"); 
    try 
    { 
     response.getWriter().write(new Gson().toJson(testers)); 
     //this one is printing so that means it actually succeed to parse? 
     System.out.println(team); 
    } 
    catch(IOException e) 
    { 
     // just want to test out if it really failed 
     System.out.println("failed"); 
     log.debug("Unable to get parse request", e); 
    } 
} 

к

if(testers != null) 
{ 
    response.setContentType("application/json"); 
    response.setCharacterEncoding("UTF-8"); 
    try 
    { 
     response.getWriter().write(new Gson().toJson(testers)); 
     //this one is printing so that means it actually succeed to parse? 
     System.out.println(team); 
    } 
    catch(IOException e) 
    { 
     // just want to test out if it really failed 
     System.out.println("failed"); 
     log.debug("Unable to get parse request", e); 
    } 
    return; 
} 

Я просто добавил return;

+0

Если ваша проблема решена, отметьте свой собственный ответ как принято :) – Jessai

+1

10 часов осталось, прежде чем я смогу отметить свой ответ. – newbie

0

Функция обратного вызова успеха, похоже, не выполняет анализ результата JSON.

Попробуйте передавая значение для вашего сервлета в виде строки URL запроса, как http://localhost/project/Analysis?team=some-value-you-know

Затем проверить печатное JSON с помощью такого инструмента, как http://jsonlint.com», исправить JSON вы генерирующий [вероятно, двойные цитаты вокруг ключей объекта JSON ].

Также попробуйте использовать инструменты разработчика JavaScript консоль игрового в вашем браузере, это поможет вам с ошибками JavaScript.

Надеется, что это помогает,
Shareb.

+0

Спасибо за советы. Но об инструменте validate, который вы упомянули, как использовать этот сайт? Я на самом деле новичок в веб-разработке. – newbie

+0

Просто вставьте сгенерированный объект JSON в текстовую область инструмента, щелкните проверку и проверьте результаты, если он недействителен, вы получите ошибку синтаксического анализа. Также вы можете нажать на часто задаваемые вопросы, чтобы узнать больше об ошибках и о том, как их решить. – Shareb

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