作为前端必须掌握的一项技能,因为工作性质的原因掌握的不够好,之前也学过不少,只是没怎么用过学了又忘记,今天我希望通过这篇文章的编写让自己对其掌握的巩固些; 首先我们要知道,所谓ajax,是Asynchronous JavaScript and XML的简写意为异步的JavaScript和XML,他不是新的语言,而是一种使用现有标准的新方法; 那么他给我们带来的好处是什么呢——在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容 如何用原生JavaScript: 首先创建:XMLHttpRequest对象 var xmlhttp = new XMLHttpRequest() 为兼容老版本: var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP")
可以这样综合写出:
var xmlhttp;
if (window.XMLHttpRequest)
{
// IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
xmlhttp=new XMLHttpRequest();
}
else
{
// IE6, IE5 浏览器执行代码
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
对象创建好了,那么我们可以向服务器发送请求了,用什么发送呢——XMLHttpRequest()的send()和open()方法
open()
open(method,url,async)
method: 请求类型post() get()
url:文件在服务器上的位置
async: 同步(false)还是异步(true)发送,默认为异步(true)
send()
send(string)
将请求发送至服务器
string:只能用于post请求
思考:get()和post()有什么区别呢,二者在什么样的情况下使用呢
与 POST 相比,GET 更简单也更快,并且在大部分情况下都能用。
然而,在以下情况中,请使用 POST 请求:
1.无法使用缓存文件(更新服务器上的文件或数据库)
2.向服务器发送大量数据(POST 没有数据量限制)
3.发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠
注:若希望想HTML表单那样POST数据,需要使用setRequestHeader() 来添加 HTTP 头。然后在 send() 方法中规定您希望发送的数据
例:
xmlhttp.open("POST","/try/ajax/demo_post2.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("fname=Henry&lname=Ford");
发送了请求那么我们这时就需要获得来自服务器的响应了,如何获得:使用XMLHttpRequest的responseText 或 responseXML 属性
responseText:获得字符串形式的响应数据
responseXML:获得XML形式的响应数据
当请求发送到服务器时,需要执行一些基于响应的任务
当readyState改变的时候会触发onreadystatechange事件
XMLHttpRequest对象有3个属性:
onreadystatechange:存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。
readyState:存储XMLHttpRequest状态,从0到4发生变化
0: 请求未初始化
1: 服务器连接已建立
2: 请求已接收
3: 请求处理中
4: 请求已完成,且响应已就绪
status:200: "OK", 404: 未找到页面
当readystate == 4 && status == 200的时候表明服务器响应已经就绪
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
以上就是原生的ajax,第一次写难免有不足之处还望各位大佬指正谢谢!