GET请求从ajax弹出

时间:2014-09-23 05:10:46

标签: javascript ajax spring

我正在学习ajax和javascript。这是使用spring和ajax添加2个数字。我收到客户端发送的请求语法错误。请帮帮我。

控制器类

@Controller
public class SumWithAjaxSpringController {

    @Resource(name="sumWithAjaxService")
    private SumWithAjaxService sumWithAjaxService;

 @RequestMapping(value = "additionWithAjax", method = RequestMethod.GET)
     public String add(@RequestParam(value="value1", required=true) Integer value1,
                        @RequestParam(value="value2", required=true) Integer value2,) {

         Integer sum =  springService.add(value1, value2);

            return "additionWithAjax";
        }
}

服务类

@Service("sumWithAjaxService")
@Transactional
public class SumWithAjaxService {

    public Integer add(Integer number1, Integer number2) {

        return number1+ number2;
    }
}

JSP

    <script type="text/javascript">
    function add() 
    {
        var xmlhttp;
        var value1 = document.getElementById("text1").value;
        var value2 = document.getElementById("text2").value;
        var url = "additionWithAjax";
        var parameters = "text1=" + value1 + "&text2=" + value2;

        if (window.XMLHttpRequest)
          { 
          xmlhttp=new XMLHttpRequest();
          }
        else
          { 
          xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
          }

        xmlhttp.onreadystatechange=function()
          {
          if (xmlhttp.readyState==4 && xmlhttp.status==200)
            {
            document.getElementById("result").innerHTML=xmlhttp.responseText;

            }

          };
            xmlhttp.open("GET",url+"?"+parameters,true);
            xmlhttp.send();
        }
        </script>        
    </head>
    <body>

Enter 1st number : <input type="text" name="n1" id="text1"> 
Enter 2nd number : <input type="text" name="n2" id="text2"> 
<input type="button" id="calculate" value="calculate"
                    onclick="add()" />
Result :<span id="result" > </span>

</body>

的web.xml

<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

<welcome-file-list>
       <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  </web-app>

3 个答案:

答案 0 :(得分:0)

@ResponseBody缺失。

需要重新编写以下方法

 @RequestMapping(value = "additionWithAjax", method = RequestMethod.GET)
     public String add(@RequestParam(value="value1", required=true) Integer value1,
                        @RequestParam(value="value2", required=true) Integer value2,) {

         Integer sum =  springService.add(value1, value2);

            return "additionWithAjax";
        }

进入

@RequestMapping(value = "additionWithAjax", method = RequestMethod.GET)
     public @ResponseBody String  add(@RequestParam(value="value1", required=true) Integer value1,
                        @RequestParam(value="value2", required=true) Integer value2,) {

         Integer sum =  springService.add(value1, value2);

            return Integer.toString(sum );
        }

答案 1 :(得分:0)

将您的控制器方法更改为以下内容,然后重试。

@RequestMapping(value = "additionWithAjax/{value1}/{value2}", method = RequestMethod.GET)
public String add(@PathVariable("value1") Integer value1,
                  @PathVariable("value2") Integer value2) {
}

从您的ajax网址发送这些值。在控制器中获取服务实例时,您可以使用@autowired注释而不是@Resource

@Autowired
@Qualifier("sumWithAjaxService")
private SumWithAjaxService sumWithAjaxService;

答案 2 :(得分:0)

根据我在您的请求网址中找到的内容,您需要先处理&#39; / SumWithAjaxController&#39;为此控制器请求映射,

@Controller
@RequestMapping(value = "/SumWithAjaxController")
public class SumWithAjaxSpringController {

然后你必须添加剩下的部分&#39; / additionWithAjax&#39;对你的方法,

@RequestMapping(value = "/additionWithAjax", method = RequestMethod.GET)

你的js代码中还有一个错误,就是你要添加两个参数名称&#39; text1&#39;和&#39;&#39; text2&#39;。它们不会被分配到您的控制器方法的参数名称,其中包含&#39; value1&#39;和&#39; value2&#39;。 参数名称必须匹配。