Java Can';t称之为Spring';使用Ajax的s控制器方法
我对Ajax非常陌生,我需要一些帮助。我需要使用Ajax调用一个控制器方法,并将输出显示为JSP页面上的响应。下面给出的是我尝试过的一段代码,但我无法让它工作 服务器代码Java Can';t称之为Spring';使用Ajax的s控制器方法,java,ajax,spring,spring-mvc,Java,Ajax,Spring,Spring Mvc,我对Ajax非常陌生,我需要一些帮助。我需要使用Ajax调用一个控制器方法,并将输出显示为JSP页面上的响应。下面给出的是我尝试过的一段代码,但我无法让它工作 服务器代码 @RequestMapping(value="/home.do",method=RequestMethod.POST,params="custdetails") public @ResponseBody ModelAndView getCustomderDetails(@RequestParam("str") Strin
@RequestMapping(value="/home.do",method=RequestMethod.POST,params="custdetails")
public @ResponseBody ModelAndView getCustomderDetails(@RequestParam("str") String custId,@ModelAttribute("customerdropdown") CustomerNameDropDown cdropdown)
{
ModelAndView mav = new ModelAndView("CustomerDetails");
List listCustomerDetails=new ArrayList();
List<Object[]> CustomerDetailsList = new ArrayList<Object[]>();
CustomerDetailsList=customerDetailsService.getCustomerDetails(custId);
mav.addObject("custregistration", cdropdown);
mav.addObject("customerdetailslist", CustomerDetailsList);
return mav;
}
您应该将控制器方法中的
@RequestParam(“str”)
更改为@RequestParam(“age”)
,request param的值是请求参数的名称,在您的情况下是agexmlhttp.open(“POST”、“home.do?custdetails”+”&age=“+str,true”)代码>
您可以将请求中的参数名称更改为xmlhttp.open(“POST”、“home.do?custdetails”+”&str=“+str,true”)
但我认为前者更合适,因为您很可能在映射中混淆了参数名称和参数值
如果您的目的是使RequestParam成为可选的,那么您应该明确地将其定义为@RequestParam(value=“age”,required=false)
,否则它是必需的您没有包含JavaScript代码。我能够从我的jsp页面成功地调用getCustomerDetails(str)函数,问题在下一步,即无法调用控制器方法。我已经包含了这部分代码。这会有什么不同?没有它,就不会调用controller方法:)您的controller方法将为POST请求调用,路径为home.do,参数custdetails和str。因此,唯一不匹配的是最后一个参数,它在您的请求中不是str,而是age。似乎您在映射中混合了参数的值和名称。谢谢,伙计,原因是参数名称不匹配。:)欢迎你,很高兴你解决了
function getCustomerDetails(str) {
var xmlhttp;
if (str=="")
{
document.getElementById("txtHint").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{
xmlhttp = new XMLHttpRequest();
}
else
{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4) {
if (xmlhttp.status == 200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
else
{
document.getElementById("txtHint").innerHTML="Please Enter All Fields..";
}
}
};
xmlhttp.open("POST","home.do?custdetails"+"&age="+str,true);
xmlhttp.send();
}