我正在学习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>
答案 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;。 参数名称必须匹配。