我是Ajax的新手,我需要一些帮助。我需要使用Ajax调用控制器方法,并在JSP页面上将输出显示为响应。下面给出的是我尝试过的一段代码,但我无法使其正常工作。
服务器代码
@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;
}
客户代码
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();
}
答案 0 :(得分:0)
您应该将控制器方法中的@RequestParam("str")
更改为@RequestParam("age")
,请求参数的值是请求参数的名称,在您的情况下 age { {1}}
您可以将请求中的参数名称更改为xmlhttp.open("POST","home.do?custdetails"+"&age="+str,true);
但我认为前者更合适,因为您很可能在映射中混淆了参数名称和参数值
如果您的目的是使RequestParam成为可选项,那么您应该明确地定义它,因为xmlhttp.open("POST","home.do?custdetails"+"&str="+str,true);
是必需的