在使用javaweb时我们常常会用到ajax,可是在刚刚接触ajax时便会思考,ajax有什么用,为什么需要用到ajax,难道没有别的方法使界面和后端有联系了吗? 当然,现在我也只是刚刚使用ajx,所以对ajx的理解还是很浅显的。 首先看这几行代码
<div>
<img alt="无图片" src="http://localhost:8080/exercise2/t1.jpg">
<h1 id="g1">欢迎进入我的网站</h1>
<div id="k1">
<form action="http://localhost:8080/exercise2/test">
账号<input type="text" name="t1"><br>
密码<input type="password" name="t2"><br>
<button id="t3">提交</button>
</form>
<button onclick="ajax()">test_ajx</button>
</div>
</div>
第一个button会调用test的doget方法,进而实现前后端的联系。 第二个button会调用js 的ajax()的方法。(以下是js的代码)
function ajax(){
alert("hello");
var xmlhttprequest =new XMLHttpRequest();
xmlhttprequest.open("GET","http://localhost:8080/exercise2/test_ajx",true);
xmlhttprequest.send();
}
很显然这一段代码是实现调用test_ajx的doget方法,进而实现前后端的联系。 似乎从功能层面上来说,第一种和使用ajax都能使前后端建立联系,但是实际上来说这两种有着很大区别,至少在运用场景上有很大区别。 第一种方法,一般运用在账户登录时使用,而第二种一般来说使用场景可以更复杂,更多变。(实际上使用ajax是对局部的作用,不需要刷新整个界面即可显示,这也是ajax的特点之一) 其实在使用ajax对前端数据获得和第一种还是有点区别的,主要获得方式是
open("get","http://localhost:8080/exercise2/test_ajx?name="+document.getElementById("content").value,true);
这里相当于传了一个数据name,那么java 代码中只要使用
req.getParameter("name");
就能获得前端的数据.这里介绍几个js的代码可以获得前端的内容 document.getElementById() document.getElementsByName() document.getElementsByClassName() document.getElementsByTagName() 上面分别可以获得id,name,class,tag的对象 这些对象有value和innerHTML的属性 两个虽然类似,但是区别还是很大的。 再补充几个方法: resp.getWriter().write();可以返回,java代码中的数据 接收 xmlhttprequest.responseText;可以获得返回的数据。
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200)
{ document.getElementById("div01").innerHTML =xhr.responseText; } }
表示ajax请求成功 总结: 以上使用的方法实际上很多已经被淘汰了,不过便于理解还是要多多了解,现在使用的方法大多是用jquery实现。实际上,我有很多观点有一定的错误,希望提出,一定会积极改正。
|