Ajax и Spring MVC: responseText не работает?

0

Я должен получить String из метода в Controller MVC с Ajax.
Я написал этот код, но метод responseText не читает строку, которую я возвращаю, когда я использую метод removePrenot() нажав кнопку. Как я могу это сделать, без JQuery? Может быть, мне нужно использовать GET вместо POST?
Спасибо.

Метод контроллера

@RequestMapping(value="/delete", method=RequestMethod.POST)  
public void delete(HttpServletRequest request, HttpServletResponse response) throws IOException {
  String str="Questo viene dal controller.";
  response.setContentType("text/plain");
  response.setCharacterEncoding("UTF-8"); 
  response.getWriter().write(str); 
 }

Javascript (Ajax)

function setXMLHttpRequest() {
    var xhr=null;
    if (window.XMLHttpRequest) {
        xhr=new XMLHttpRequest();
    }
    else if (window.ActiveXObject) {
        xhr=new ActiveXObject("Microsoft.XMLHTTP");
    }
    return xhr;
}

var xhrObj=setXMLHttpRequest();

function removePrenot() {
    var url="<%=request.getContextPath()%>/delete";
    xhrObj.open("POST",url,true);
    xhrObj.onreadystatechange=updatePage;
    xhrObj.send(null);
}

function updatePage() {
    if(xhrObj.readyState===4) {
        alert("Return - "+xhrObj.responseText);
        var risp=xhrObj.responseText();
        document.getElementById("risposta").innerHTML=risp;
    }
}

РЕДАКТИРОВАТЬ

Я пытался с jQuery, с этими строками кодов, но он все еще не работает.

function doAjaxPost() {
    $.ajax({type:"Post", url:"<%=request.getContextPath()%>/delete",    
    success:function(response) {  
      alert(response);   
    },  
    error:function(e) {  
      alert('Error: ' + e);   
    }  
   });
  • 0
    Вы проверили в браузере, как выглядит ответ, и можете ли вы опубликовать этот вывод?
  • 0
    Я нашел решение с помощью jQuery. HttpServletRequest e HttpServletResponse отсутствует. @RequestMapping(value="/delete", method=RequestMethod.POST) public @ResponseBody String delete(HttpServletRequest request, HttpServletResponse response) throws Exception
Теги:
spring
spring-mvc

1 ответ

0
Лучший ответ

то, что вы пытаетесь сделать в Spring MVC, может быть выполнено с использованием следующего кода

@RequestMapping(value="/delete", method= RequestMethod.POST)
    @ResponseBody
    public String delete()  {
        return "Questo viene dal controller.";
    }

Кроме того, вам, вероятно, будет лучше использовать jQuery для ваших запросов ajax на стороне клиента, поскольку он обрабатывает весь материал crossbrowser внутри

ОБНОВЛЕНИЕ:

Как я уже сказал, HttpRequest и HttpResponse не нужны в Spring MVC Controller. Оказывается, там есть несколько проблем со страницей. Прежде всего было несоответствие между версиями jQuery (версия 1.11.0 присутствовала, но запрашивалась версия 1.10.1). Во-вторых, тег сценария jQuery должен присутствовать перед любым другим javascript, который его использует. В-третьих, статические ресурсы, которые не обслуживаются корректно Spring MVC. Вам нужно переместить, css, js и изображения в папку с именем static в корневой веб-папке, а затем добавить следующую конфигурацию в dispatcher-servlet.xml

<mvc:resources mapping="/static/**" location="/static/" />

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>

Соответственно, все страницы должны запрашивать ресурсы, используя static/...

Например, static/js/jquery-1.11.0.js

  • 0
    Я пытался с JQuery, вы можете увидеть код в части редактирования . Это верно?
  • 0
    Javascript выглядит хорошо (пока функция находится внутри jsp, поэтому обрабатывается <% = request.getContextPath ()%>). Вы пробовали контроллер с обновленным кодом?
Показать ещё 13 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню