ajax的两种写法

article/2025/8/17 23:06:50

一、原生ajax的实现

1.什么是ajax?

ajax是异步的javas和xml( Asynchronous JavaScript And XML)。

通过在后台与服务器进行小量的数据交换,ajax可以使网页实现异步更新。就是说可以在不刷新页面的情况下,对页面的某个部分进行刷新。

 

2.ajax与服务器交换数据的过程是怎么样的

 

交互的过程

 

 

readyState 对象状态值

0 (未初始化) 对象已建立,但是尚未初始化(尚未调用open方法)

1 (初始化) 对象已建立,尚未调用send方法

2 (发送数据) send方法已调用,但是当前的状态及http头未知

3 (数据传送中) 已接收部分数据,因为响应及http头不全,这时通过responseBody和responseText获取部分数据会出现错误,

4 (完成) 数据接收完毕,此时可以通过通过responseXml和responseText获取完整的回应数据

 

 

4、ajax有哪些方法使用

 

方    法

描    述

abort()

停止当前请求 

getAllResponseHeaders()

把HTTP请求的所有响应首部作为键/值对返回

getResponseHeader("header")

返回指定首部的串值

open("method","URL",[asyncFlag],["userName"],["password"]) 

建立对服务器的调用。method参数可以是GET、POST或PUT。url参数可以是相对URL或绝对URL。这个方法还包括3个可选的参数,是否异步,用户名,密码

send(content)

向服务器发送请求

setRequestHeader("header", "value")

把指定首部设置为所提供的值。在设置任何首部之前必须先调用open()。设置header并和请求一起发送 ('post'方法一定要 )

 

 

5、使用ajax的步骤是怎么样的?

1)创建xhrHTTPRequest对象

2)使用open方法设置和服务器的交互信息

3)设置发送的数据,开始和服务器端交互

4)处理当服务器传数据过来

5)更新界面

 

 

6、如何书写

1)get方法

var xhr = new XMLHttpRequest();//创建对象

xhr.open('GET',url+""+data,true);//设置请求的参数,第一个是方式,第二个是地址,这个参数可以带上一些参数,动态的提交数据,第三个为是否异步

xhr.onreadystatechange = function () {//当状态改变的时候调用

    if (xhr.readyState == 4 && xhr.status == 200 || xhr.status == 304){

        fn.call(this,xhr.responseText);//成功时调用的方法

    }

};

xhr.send();//发送请求

2)post方法

var xhr = new XMLHttpRequest();

xhr.open('POST',url,true);

xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");//一定要设置不然,phppost获取不到数据

xhr.onreadystatechange = function () {

    if (xhr.readyState == 4 && xhr.status == 200|| xhr.status == 304){

        fn.call(this,xhr.responseText);//成功时调用的方法

    }

};

xhr.send(data);

3)整合起来

 

var Ajax = {

    get:function (url,fn,data) {

        var xhr = new XMLHttpRequest();//创建对象

        xhr.open('GET',url+"?"+data,true);//设置请求的参数,第一个是方式,第二个是地址,这个参数可以带上一些参数,动态的提交数据,第三个为是否异步

        xhr.onreadystatechange = function () {//当状态改变的时候调用

            if (xhr.readyState == 4 && xhr.status == 200 || xhr.status == 304){

                fn.call(this,xhr.responseText);//成功时调用的方法

            }

        };

        xhr.send();//发送请求

 

    },

    post:function (url,data,fn) {

        var xhr = new XMLHttpRequest();

        xhr.open('POST',url,true);

        xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");//一定要设置不然,phppost获取不到数据

        xhr.onreadystatechange = function () {

            if (xhr.readyState == 4 && xhr.status == 200|| xhr.status == 304){

                fn.call(this,xhr.responseText);//成功时调用的方法

            }

        };

        xhr.send(data);

    }

};

 

 

所有代码

ajax.html

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Title</title>

</head>

<body>

    <div class="ajax">

        <select id="provinces" οnchange="getProvinces(this.value)">

            <option></option>

            <option value="guangdong">广东</option>

            <option value="fujian">福建</option>

            <option value="jiangsu">江苏</option>

        </select>

        <select id="citys">

 

        </select>

    </div>

    <script>

        var Ajax = {

            get:function (url,data,fn) {

                var xhr = new XMLHttpRequest();//创建对象

                xhr.open('GET',url+data,true);//设置请求的参数,第一个是方式,第二个是地址,这个参数可以带上一些参数,动态的提交数据,第三个为是否异步

                xhr.onreadystatechange = function () {//当状态改变的时候调用

                    if (xhr.readyState == 4 && xhr.status == 200 || xhr.status == 304){

                        fn.call(this,xhr.responseText);//成功时调用的方法

                    }

                };

                xhr.send();//发送请求

 

            },

            post:function (url,data,fn) {

                var xhr = new XMLHttpRequest();

                xhr.open('POST',url,true);

                xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");//一定要设置不然,phppost获取不到数据

                xhr.onreadystatechange = function () {

                    if (xhr.readyState == 4 && xhr.status == 200|| xhr.status == 304){

                        fn.call(this,xhr.responseText);//成功时调用的方法

                    }

                };

                xhr.send(data);

            }

        };

        function getProvinces(value) {

         var province = value;

         console.log(province);

         // Ajax.post("getCity.php","province="+province,setCity);//这里的province一定要写成name=value的形式

            Ajax.get("getCity.php?","province="+province,setCity);

         var citySle = document.getElementById("citys");

         citySle.options.length = 0;

         citySle.value = "";

        }

        function setCity(provinces) {

            console.log(provinces);

            provinces = JSON.parse(provinces);

            var citySlect = document.getElementById("citys");

            for (var item of provinces){

                var option = document.createElement("option");

                console.log(item);

                var curname = item.name;

                var curid = item.id;

                option.innerText = curname;

                option.id = item.id;

                citySlect.appendChild(option);

            }

        }

    </script>

</body>

</html>

 

getCity.php

<?php

/**

* Created by PhpStorm.

* User: lwl

* Date: 2019/1/12

* Time: 9:10

*/

//$province = $_POST["province"];

$province = $_GET["province"];

if ($province){

    $json = file_get_contents("citys.json");

    $data = json_decode($json,true);

    foreach ($data as $key=>$value){

        if ($value["provinces"] == $province){

            echo json_encode($value["citys"],true);

        }

    }

}

 

citys.json

[

  {

    "provinces":"guangdong",

    "citys":[

      {

        "name":"惠州",

        "id":"huizhou"

      },

      {

        "name":"广州",

        "id":"guanghzhou"

      },

      {

        "name":"深圳",

        "id":"shenzhen"

      },

      {

        "name":"佛山",

        "id":"foshan"

      }

 

    ]

  },

  {

    "provinces":"fujian",

    "citys":[

      {

        "name":"厦门",

        "id":"xiamen"

      },

      {

        "name":"福州",

        "id":"fuzhou"

      },

      {

        "name":"莆田",

        "id":"putian"

      },

      {

        "name":"泉州",

        "id":"quanzhou"

      }

 

    ]

  },

  {

    "provinces":"jiangsu",

    "citys":[

      {

        "name":"南京",

        "id":"nanjing"

      },

      {

        "name":"无锡",

        "id":"wuxi"

      }

 

    ]

  }

]

 

 

 

 

二、jquery 的ajax

1.ajax

ajax( url [, settings ] )

参数用{}括起来

常用参数:

* accepts-->接收服务器返回的数据类型

* async-->默认情况下,所有请求都为异步(true)

* beforeSend-->请求发送前的回调函数

* cache-->浏览器是否缓存此页面

* complete(always()-->请求完成后的回调函数,这个函数可以接收一个函数的数组,每个函数被依次调用。

* contents-->一个以"{字符串/正则表达式}"配对的对象,根据给定的内容类型,解析请求的返回结果

* contentType-->发送信息到服务器的时候内容编码形式(默认: 'application/x-www-form-urlencoded; charset=UTF-8');你必须在服务器端进行适当的解码。

* context-->用来设置ajax相关回调函数的上下文(这个上下文就是dom树中的一个元素),用这个上下文来指定回调函数所应用的对象(就是哪些区域需要被改变)

* data,给服务器传送的数据,将会被自动转换成字符串格式,

* dataType:预期服务器返回的数据类型。如果不指定,jQuery将会自动根据HTTP包中的MIME来判断

* error(fail()):请求失败时调用的函数,有三个参数(对象,描述错误符,捕获的一层的对象)

* passwor:响应http请求的时候认证密码

* success(done()):响应成功时调用的函数

* timeout:设置请求超时时间

* type:请求方式(POST,GET)

* url:发送请求的地址

* username:响应http访问认证请求的用户名

 

 

 

 

<?php

if (isset($_POST["name"])){

    echo "this is form ajax: ".$_POST["name"]."and her age is ".$_POST["age"];

}else{

    echo "args error";

 

<form id="myform" method="post">

    <label for="name"></label>

    <input id="name" type="text">

    <label for="age"></label>

    <input id="age" type="text">

</form>

<button id="submit">提交表单</button>

<script src="jquery-3.3.1.min.js" type="text/javascript"></script>

<script>

   $("#submit").click(function () {

    $.ajax({

       type:"post",

        url:"index.php",

       data:{

           name:$("#name").val(),

           age:$("#age").val()

       },

        success:function (data) {

            console.log(data);

        },

        error:function () {

            console.log("请求服务器失败");

        },

        complete:function () {

            console.log("ajax请求完成啦");

        }

    });

});

</script>

 

可以看到当我们把地址修改了之后,也就是服务器不能连通之后,就会调用error函数。

或者像下面这样,使用done,fail和always函数

$("#submit").click(function () {

   $.ajax({

       type:"post",

        url:"index.php",

       data:{

           name:$("#name").val(),

           age:$("#age").val()

       }

    }).done(function (data) {

        console.log(data);

    }).fail(function () {

      console.log("调用函数失败");

  }).always(function () {

      console.log("不管你成不成都得调用我哈哈哈");

  });

});

 

2.post()

jQuery.post( url [, data ] [, success(data, textStatus, jqXHR) ] [, dataType ] ),使用一个HTTP POST 请求从服务器加载数据。

这个操作相当于上面ajax操作的type设置为post

 

参数如下

* url:发生请求的地址

* data:向服务器发送的数据

* success(data,textStatus,jqXHR):请求成功后执行的回调函数

* dataType:从服务器预期返回的数据类型

 

拥有的函数集合跟ajax一样,如done(),fail(),always();

$("#submit").click(function () {

    var data = "";

   $.post(

       "index.php",

       {

           name:$("#name").val(),

           age:$("#age").val()

       },

       function (data) {

           console.log(data);

       }

       );

    });

 

或者

$("#submit").click(function () {

   $.post("index.php",{name:$("#name").val(),age:$("#age").val()}).done(function (data) {

        console.log(data);

    }).fail(function () {

      console.log("调用函数失败");

  }).always(function () {

      console.log("不管你成不成都得调用我哈哈哈");

  });

});

 

3.get和post一样

但是服务器代码要用get来接收

i

f (isset($_GET["name"])){

    echo "this is form ajax: ".$_POST["name"]."and her age is ".$_GET["age"];

}else{

    echo "args error";

}

$("#submit").click(function () {

    $.get("index1.php",{name:$("#name").val(),age:$("#age").val()}).done(function (data) {

        console.log(data);

    }).fail(function () {

        console.log("调用函数失败");

    }).always(function () {

        console.log("不管你成不成都得调用我哈哈哈");

    });

});

 

 

$("#submit").click(function () {

    var data = "";

   $.get(

       "index.php",

       {

           name:$("#name").val(),

           age:$("#age").val()

       },

       function (data) {

           console.log(data);

       }

       );

    });

 

 


http://chatgpt.dhexx.cn/article/s9AqGbSF.shtml

相关文章

【ajax】ajax详解,ajax是什么?

思路&#xff1a; ajax&#xff1a;&#xff08;asynchronous javascript and xml&#xff09; asynchronous 异步的 ajax是什么&#xff1f; ajax是一种用来改善用户体验的技术&#xff0c;其本质是利用浏览器提供的一个特殊的对象&#xff08;XMLHttpRequest,也可称之为ajax…

Ajax的请求写法详解

简介 是什么 Ajax全称Asynchronous JavaScript and XML&#xff0c;直译过来就是异步的javascript 和 XML。为什么是叫XML还得由于最开始用ajax实现客户端和服务器端数据通信的时候&#xff0c;传输的数据格式一般都是xml格式的数据&#xff0c;所以把它称之为异步js和xml&am…

$.ajax的标准写法

$.ajax({2 url:"http://www.microsoft.com", //请求的url地址3 dataType:"json", //返回格式为json4 async:true,//请求是否异步&#xff0c;默认为异步&#xff0c;这也是ajax重要特性5 data:{"id":"value"}, …

ajax详细用法

一、基础知识 1、首先让我们了解ajax---------------- 通过在后台与服务器进行少量数据交换&#xff0c;AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下&#xff0c;对网页的某部分进行更新。 2、ajax的核心步骤&#xff1a; 创建XMLHttpReq…

ajax的常见几种写法以及用法

一、服务端数据格式 1.自定义po类 package com.hbut.ssm.po;/*** pojo类**/ public class Children {private String name;private Integer age;private String gender;public Children(String name, Integer age, String gender) {super();this.name name;this.age age;thi…

Ajax的三种写法(最原始的写法+最常用的写法+最简便的写法)

AJAX&#xff1a;Asynchronous JavaScript AND XML 定义&#xff1a;浏览器向服务器发送的异步请求&#xff08;不改变页面的情况下&#xff0c;发送的变化&#xff09; 核心&#xff1a;浏览器向服务器发送异步请求&#xff0c;javascript中提供xmlHttpRequest对象&#xf…

利用油管语音转文字

https://www.tunestotube.com/ 音频上传油管https://zhuwei.me/y2b/ 获取油管字幕文章转载自 https://www.jianshu.com/p/762ae8461243

怎样能把文字变成语音

文字转语音目前在人们的生活和工作中发挥着很大的作用&#xff1b;没事的时候人们总是喜欢看看手机新闻或者玩玩电脑游戏&#xff0c;我们在看新闻的内容时&#xff0c;长时间的盯着屏幕看文字&#xff0c;很快会让眼睛变的疲劳&#xff0c;如果想要让眼睛得到休息又能够获取新…

Java文字转语音功能实现

也许&#xff0c;有些时候&#xff0c;你需要这个需求呢&#xff0c;来上代码 我会写出两种不同方式的文字转语音demo&#xff0c;直接copy走用&#xff0c;节省开发时间 git项目下载地址 1.直接使用jdk的 jacob&#xff0c;效果还不错&#xff0c;特点&#xff1a;免费的 2…

电脑文字转语音怎么弄?这些方法值得一试

有时我们需要在上网搜索一些文献作为参考&#xff0c;但有些资料文字太多&#xff0c;内容枯燥&#xff0c;不是很想阅读。这时我们可以将网页文字转成语音&#xff0c;就不用一直盯着屏幕上的文字&#xff0c;通过“听”的方式&#xff0c;还可以让我们放松下来。那么你知道网…

视频语音识别文字

广告关闭 9.9元享100G流量包&#xff0c;1年有效&#xff0c;低至1元/天&#xff0c;具备美颜动效视频处理等功能&#xff0c;支持定制开发&#xff0c;最快1天接入。 腾讯云语音识别服务开放实时语音识别、一句话识别和录音文件识别三种服务形式&#xff0c;满足不同类型开发…

如何将视频的语音变成文字播放出来?

看到回答中很多人分享的是软件&#xff0c;每次使用都需要下载&#xff0c;给大家分享两款在线端语音转文字工具&#xff0c;不用下载安装&#xff0c;在线登录就能使用&#xff0c;非常方便。 1、网易见外 网易见外是网易团队上线的一款转文本工具&#xff0c;上线了视频转写…

如何才能实现文字转语音播放?只要这三个步骤就能快速搞定!

大家知道吗&#xff1f;配音已经不再是影视制作的专属工作了&#xff0c;如今随着各种短视频平台的热度上涨&#xff0c;许多普通用户也加入到短视频的制作中&#xff0c;市面上也陆续出现许多专门服务于这类人员的配音工具&#xff0c;依托它们&#xff0c;大家无需进行人工配…

手把手教你实现——Python文字(汉字)转语音教程,举一反三~

前言&#xff1a; 这是一篇简单的Python文字&#xff08;汉字&#xff09;转语音教程&#xff0c;当然对于其他语言工具在实现的方法上也是一样的 。 在自然语言处理上&#xff0c;文字、音频互转是一个很关键的技术点。对于语音转文字&#xff0c;个人实现较为困难&#xff…

在线文字转成语音怎么转

很多小伙伴在办公或学习中&#xff0c;经常或需要浏览大量资料。随着时间越来越长&#xff0c;我们的眼睛就会多度疲劳。为了不戴上眼镜&#xff0c;我们只能改变当前的方式&#xff0c;也就是把文字变成语音去听&#xff0c;而不是去看。那么就有小伙伴想问了在线文字转成语音…

做短视频时如何将文字转为语音?分享三个小方法,教你轻松配音

做短视频时如何将文字转为语音&#xff1f;分享三个小方法&#xff0c;教你轻松配音 在做短视频的时候&#xff0c;经常会遇到需要将文字转为语音&#xff0c;为短视频配音的情况。那么&#xff0c;我们可以如何为短视频配音呢&#xff1f;文字转为语音的方法又有哪些呢&#…

小程序实现文字转语音

1、在微信公众平台登录小程序&#xff0c;添加插件微信同声翻译 搜索微信同声翻译点击添加&#xff0c;即可进行开发 代码 index.html <view><button class"showCharacter" bindtap"wordYun">跟我读</button> </view>index.js …

在线文字转语音怎么转

小伙伴们有没有遇到过需要把文字变成语音&#xff0c;要求发声的问题呢&#xff1f;其实在很多领域需要把文字变成语音&#xff0c;比如我们每天接触的短视频领域&#xff0c;尤其是一些影视评论博主使用的评论视频。这给短视频制作人带来了很多便利&#xff0c;节省了配音成本…

微信公众号 语音转文字api_文字一键转语音,无需安装任何软件

点击蓝字关注我们 截止到今天&#xff0c;整整一个月没有出门了。 人都说&#xff0c;越闲越懒、越吃越馋&#xff0c;这话一点不错&#xff0c;早上睡到八九点&#xff0c;起来洗漱一下&#xff0c;吃点早餐&#xff0c;一整个上午就这么溜走了&#xff0c;以至于老妈给我打视…

php文字转语音amr,如何将文字转成语音?这几个方法一分钟搞定!

原标题:如何将文字转成语音?这几个方法一分钟搞定! 文字转语音在我们的生活中已经广泛使用了,早晨起床想要看看新闻,但是又无奈时间不够,这时不必慌张,想要了解新闻事件,我们直接把这些文字转为语音,随时随地有时间就可以播放出来听,一点都不怕耽误做其它的事情。 那…