Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Can';t称之为Spring';使用Ajax的s控制器方法_Java_Ajax_Spring_Spring Mvc - Fatal编程技术网

Java Can';t称之为Spring';使用Ajax的s控制器方法

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

我对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;
}

您应该将控制器方法中的
@RequestParam(“str”)
更改为
@RequestParam(“age”)
,request param的值是请求参数的名称,在您的情况下是age
xmlhttp.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(); 
}