我必须使用Ajax从Controller MVC中的方法获取String。
我编写了这段代码,但当我使用方法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)
您在Spring MVC中尝试做的事情可以使用以下代码完成
@RequestMapping(value="/delete", method= RequestMethod.POST)
@ResponseBody
public String delete() {
return "Questo viene dal controller.";
}
你也可能最好使用jQuery为你的客户端ajax请求,因为它内部处理所有的crossbrowser东西
<强>更新强>:
正如我所说,Spring MVC Controller中不需要HttpRequest和HttpResponse。事实证明,页面存在一些问题。首先,jQuery版本之间存在不匹配(版本1.11.0存在但正在请求版本1.10.1)。其次,jQuery脚本标记需要在使用它之前的任何其他javascript之前出现。
第三个是Spring MVC无法正确提供的静态资源。您需要将move,css,js和images移动到根web文件夹下名为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