原生js编写Ajax

代码

/**
* @author: kjprime
* @description ajax
* @param {object} obj
* @return {void}
*/
function ajax(obj){
    // 创建XMLHTTPRequest对象 
    let xhr =  new XMLHttpRequest() || new ActiveXObject("microsoft.xmlhttp") || window.XMLHttpRequest
    // 设置默认POST
    obj.type = obj.type || "POST"
    let isPost = "POST" == obj.type ? true : false //默认POST
    // 当为GET无?在url中添加?xx=xx&
    if(!isPost && obj.url.indexOf("?") < 0){
        obj.url += "?"
        for(let key in obj.data){
            obj.url += `${key}=${obj.data[key]}&`
        }
    }
    xhr.open(obj.type, obj.url, true,"4444", "849654")
    if(isPost){
        //("Content-type", "application/x-www-form-urlencoded")
        xhr.setRequestHeader("Content-type","application/json")
        xhr.send(JSON.stringify(obj.data))
    }else{
        xhr.send()
    }
    xhr.onreadystatechange = function(){
//        console.log(readyState[this.readyState])
        if (this.readyState == 4 && this.status == 200) {
//            console.log(status[this.status])
            obj.success(JSON.parse(this.responseText))
        }
        if(this.readyState < 4 && this.status > 204){
            console.error(status[this.status])
       }
    }

}

const readyState = {
    0: '请求未初始化',
    1: '服务器连接已建立',
    2: '请求已接收',
    3: '正在处理请求',
    4: '请求已完成且响应已就绪',
}


const status = {
    200: '服务器成功返回请求的数据。',
    201: '新建或修改数据成功。',
    202: '一个请求已经进入后台排队(异步任务)。',
    204: '删除数据成功。',
    400: '发出的请求有错误,服务器没有进行新建或修改数据的操作。',
    401: '用户没有权限(令牌、用户名、密码错误)。',
    403: '用户得到授权,但是访问是被禁止的。',
    404: '发出的请求针对的是不存在的记录,服务器没有进行操作。',
    406: '请求的格式不可得。',
    410: '请求的资源被永久删除,且不会再得到的。',
    422: '当创建一个对象时,发生一个验证错误。',
    500: '服务器发生错误,请检查服务器。',
    502: '网关错误。',
    503: '服务不可用,服务器暂时过载或维护。',
    504: '网关超时。',
}

例子-POST

ajax({
	type: "POST",
	url: "http://127.0.0.1:3000/add", // url
	data: data, // json
	success: function(data){
		console.log(data);
	},
})

例子-GET

ajax({
	type: "GET",
	url: "http://127.0.0.1:3000/add", // url
	data: data, // json
	success: function(data){
		console.log(data);
	},
})
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
原生 JSAJAX 搜索功能可以通过以下步骤实现: 1. 创建一个 HTML 表单,其中包含一个输入框和一个提交按钮。 ```html <form> <input type="text" id="searchInput" placeholder="Search..."> <button type="submit" id="searchBtn">Search</button> </form> ``` 2. 为提交按钮添加一个事件监听器,当点击按钮时,阻止默认表单提交行为并调用搜索函数。 ```javascript document.getElementById("searchBtn").addEventListener("click", function(event) { event.preventDefault(); search(); }); ``` 3. 编写搜索函数,该函数使用 AJAX 发送 GET 请求到服务器,并将搜索结果显示在页面上。 ```javascript function search() { // 获取输入框的值 var query = document.getElementById("searchInput").value; // 创建 AJAX 请求 var xhr = new XMLHttpRequest(); xhr.open("GET", "/search?q=" + query, true); // 设置响应处理函数 xhr.onreadystatechange = function() { if (xhr.readyState === 4 && xhr.status === 200) { // 将搜索结果显示在页面上 var results = JSON.parse(xhr.responseText); displayResults(results); } }; // 发送请求 xhr.send(); } function displayResults(results) { // 将搜索结果显示在页面上 } ``` 4. 在服务器端实现搜索功能,接受 GET 请求中的查询参数并返回匹配的结果。可以使用 PHP、Node.js、Python 等服务器端语言实现。 以上就是一个简单的原生 JSAJAX 搜索功能的实现方式。当然,具体实现方式还需要根据实际情况进行调整和优化。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值