ajaxを学んでいます。以下のコードを見つけてください。
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org /TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
<script type="text/javascript" src="/MyApp/js/jquery.js"></script>
<script type="text/javascript">
function doAjax() {
alert('yes');
$.ajax({
url: 'register.html',
data: ({name : "me"}),
success: function(data) {
$('#time').html(data);
}
});
}
</script>
</head>
<body>
<form action="">
<button id="demo" onclick="doAjax()" title="Button">Get the time!</button>
<div id="time">
</div>
</form>
</body>
</html>
このコードは、Springコントローラーへのajax呼び出しを成功させ、フォームタグを削除した場合にのみデータを返します。そうしないと、ajaxメッセージが表示されません(エラーもありません)。
ログを確認しました。フォームタグを削除すると、最後に受信したリクエストは「register.html」であり、これは非常に正しいです。フォームタグを配置すると、ボタンをクリックすると、上記のコードを保持するページである「hello.html」にリクエストが送信されます。これがどのように起こっているのか理解できません。
私が疑っていたのは、フォームがコミットされていることです。しかし、ボタンをクリックしたときにサミットイベントを発生させていない場合、これはどうすれば起こりますか。
このページにフォームタグが必要なので、アドバイスをお願いします。
以下のコントローラー機能、
@RequestMapping("/hello")
public ModelAndView helloWorld() {
return new ModelAndView("hello", "message", "Spring MVC Demo");
}
@RequestMapping(value = "/register", method = RequestMethod.GET)
public @ResponseBody String registerUser(@RequestParam String name) {
String result = "Time for registration" + name + " is " + new Date().toString();
return result;
}