Я должен получить 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);
}
});
то, что вы пытаетесь сделать в 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
@RequestMapping(value="/delete", method=RequestMethod.POST) public @ResponseBody String delete(HttpServletRequest request, HttpServletResponse response) throws Exception