如何使用jQuery的ajax()函数进行异步的HTTP请求
在这篇文章中,我们将看到如何使用jQuery的ajax()函数来异步调用后端功能,或者换句话说是HTTP请求。AJAX是一套由客户端框架和库使用的网络开发技术,用于向服务器进行异步的HTTP调用。AJAX是 “A synchronous J avaScript and X ML “的缩写。
更简单地说,你可以使用Ajax从后台加载数据,而实际上不需要重新加载页面。你也可以在后台向服务器发送数据,在页面已经加载时请求数据和接收数据。使用Ajax可以在应用程序上提供更好的用户体验。
语法:
$.ajax(url);
$.ajax(url,[options]);
下表列出了ajax请求中常用的下级选项。
| url | 一个字符串,包含请求所要发送的URL。 | 
|---|---|
| type | 一个http请求的类型,例如POST、PUT和GET。默认为GET请求。 | 
| contentType | 一个包含发送到服务器的内容类型的字符串。 | 
| dataType | 你期望从服务器返回的数据类型,JSON、XML等。 | 
| success | 一个回调函数,在Ajax请求成功时执行。 | 
| error | 一个回调函数,在请求失败时执行。 | 
| data | 一个要发送至服务器的数据。它可以是JSON对象、字符串或数组。 | 
创建一个简单的AJAX GET请求
在我们使用Ajax之前,我们需要在你的应用程序中获得jQuery。在这篇文章中,我们将使用网上提供的Ajax jQuery脚本,如下面的代码。为了这篇文章的目的,我们将考虑一个JSON文件,我们将发送一个ajax()请求并从文件中获取数据。
让我们考虑一下,名为 “data.json “的JSON文件在一个名为data的文件夹内,该文件夹位于根目录下,换句话说,就是我们的html文件当前所在的文件夹,其数据如下图所示。
注意:请记住,你需要在localhost或一些部署好的路径上进行ajax请求工作,否则会给你一个CORS(跨源资源共享)错误。
** data.json文件:**
[
    {
        "Name":"Aman Prakash Jha",
        "Occupation": "Student"
    },
    {
        "Name":"Sharan Swaroop",
        "Occupation":"SDE-1"
    },
    {
        "Name":"Chiraag Kakar",
        "Occupation":"Sr. Software Engineer"
    }
]
示例:
<!DOCTYPE html>
<html>
 
<head>
 
    <!--Loading the script so that we can use Ajax-->
    <script src=
"https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js">
    </script>
</head>
 
<body>
    <h2>Welcome To GFG</h2>
 
     
<p>
        Default code has been
        loaded into the Editor.
    </p>
 
 
    <button id="getData">GET</button>
     
    <script>
        ("#getData").click(function (event) {
            event.preventDefault();
            .ajax({
                url: "data/data.json",
                type: "GET",
                dataType: "json",
                success: function (data) {
                     
                    // This here will print the
                    // retrieved json on the console.
                    console.log(data);
                },
                error: function () {
                    console.log("Something went wrong");
                },
            });
        });
    </script>
</body>
 
</html>
输出:
[
    {
        "Name":"Aman Prakash Jha",
        "Occupation": "Student"
    },
    {
        "Name":"Sharan Swaroop",
        "Occupation":"SDE-1"
    },
    {
        "Name":"Chiraag Kakar",
        "Occupation":"Sr. Software Engineer"
    }
]
发送一个简单的AJAX POST请求。
现在让我们继续前进,尝试使用ajax()方法发送一个 “POST “请求。
在这个例子中,我们将使用一个用flask-microframework编写的简单的python函数,它将接收来自ajax()的POST请求并简单地返回数据。如果你想了解更多关于flask的信息,你可以在这里阅读其官方文档。
from flask import Flask, redirect, render_template, request
 
app = Flask(__name__)
 
@app.route('/data/post_data/', methods = ["GET","POST"])
def post_data():
    '''Function which is supposed to process the
    POST request received from ajax'''
    data = None
    if request.method == "POST":
        '''Stores the Json file that is posted by ajax.
        This function simply returns the Json file
        it receives.'''
        data = request.get_json()
        print(data)
        return ({"status":200, "data":data})
    return render_template("post.html")
 
if __name__ == '__main__':
    app.run(debug=True)
例子:这是你如何用ajax()为 “POST “请求设置HTML。
<html>
  <head>
    <script src=
"https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js">
    </script>
  </head>
  <body>
    <h2>Welcome To GFG</h2>
     
 
<p>Default code has been loaded
      into the Editor.</p>
 
 
    <form method="POST">
        <input type="text"
               placeholder="Name" id="name">
        <button id="btn">POST</button>
    </form>
    <script>
        ("#btn").click(function(event){
            event.preventDefault();
              var name =("#name").val();
            $.ajax({
              url:"/data/post_data/",
              type:"POST",
              contentType:"application/json",
              dataType:"json",
              data: JSON.stringify({
                name: name,
                occupation: "SDE"
              }),
              success: function(data) {
                console.log(data)
              },
              error: function(data ){
                console.log("Something went wrong");
              }
            });
        });
    </script>
  </body>
</html>
输出:
{
    data: {name: "Aman Prakash Jha", occupation: "SDE"},
    status:200
}
极客教程