跳转至

Jquery AJax

1. 介绍

  AJAX 是一种与服务器交换数据的技术,可以在不重新载入整个页面的情况下更新网页的一部分。

  下面的表格列出了所有的 jQuery AJAX 方法:

方法 描述
$.ajax() 执行异步 AJAX 请求
$.ajaxPrefilter() 在每个请求发送之前且被 $.ajax() 处理之前,处理自定义 Ajax 选项或修改已存在选项
$.ajaxSetup() 为将来的 AJAX 请求设置默认值
$.ajaxTransport() 创建处理 Ajax 数据实际传送的对象
$.get() 使用 AJAX 的 HTTP GET 请求从服务器加载数据
$.getJSON() 使用 HTTP GET 请求从服务器加载 JSON 编码的数据
$.getScript() 使用 AJAX 的 HTTP GET 请求从服务器加载并执行 JavaScript
$.param() 创建数组或对象的序列化表示形式(可用于 AJAX 请求的 URL 查询字符串)
$.post() 使用 AJAX 的 HTTP POST 请求从服务器加载数据
ajaxComplete() 规定 AJAX 请求完成时运行的函数
ajaxError() 规定 AJAX 请求失败时运行的函数
ajaxSend() 规定 AJAX 请求发送之前运行的函数
ajaxStart() 规定第一个 AJAX 请求开始时运行的函数
ajaxStop() 规定所有的 AJAX 请求完成时运行的函数
ajaxSuccess() 规定 AJAX 请求成功完成时运行的函数
load() 从服务器加载数据,并把返回的数据放置到指定的元素中
serialize() 编码表单元素集为字符串以便提交
serializeArray() 编码表单元素集为 names 和 values 的数组

2. ajax get

get()方法是通过HTTP GET请求载入信息。这是一个简单的GET 请求能以取代复杂的$.ajax,请求成功时可调用回调函数。

$.ajax({
    url:url,
    data:data,
    success:success,
    dataType: dataType
});
  我没开后台服务,我就弄了个data.json本地文件,直接ajax请求本地数据。

data.json文件和html文件在一个文件夹内,否则要修改请求的url地址

data.json

[
  {
    "id":"1",
    "name":"张三",
    "age":10
  },
  {
    "id":"2",
    "name":"李四",
    "age":10
  },
  {
    "id":"3",
    "name":"王五",
    "age":10
  },
  {
    "id":"4",
    "name":"赵六",
    "age":10
  }
]

html

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
    <script type="text/javascript" src="js/select_cmz.js"></script>
</head>

<body>
<table border="1">
    <thead>
        <tr>
            <th>编号</th>
            <th>姓名</th>
            <th>年龄</th>
        </tr>
    </thead>
    <tbody>
    </tbody>
</table>
<button>点击</button>
</body>
<script>
    $(function () {
        $('button').click(function () {
            $.get("data.json",function (data) {
                // console.log(data)
                for (var i = 0;i<data.length;i++) {
                    $('tbody').append(
                    "<tr>"+
                    "<td>"+data[i].id+"</td>"+
                    "<td>"+data[i].name+"</td>"+
                    "<td>"+data[i].age+"</td>"+
                    "</tr>"
                    )
                }
            })
        })
    })
</script>
</html>

ajax_get

get 请求可以省略,type字段

注意: 先使用console.log 控制台打印是否有数据,有的话在调用数据

3. ajax post

post()方法是通过HTTP POST请求从服务器载入数据。

$.ajax({
    type:'POST',
    url:url,
    data:data,
    success:success,
    dataType: dataType
});

参数 描述
url 必须,规定把请求发送到哪个url
data 可选,映射或字符串值,规定连同请求发送到服务器数据
success(data,textStatus,jqXHR) 可选,请求成功时执行的回调函数
dataType 可选,规定预期的服务器响应的数据类型,默认执行执行判断,(xml,json,script or html)

  ajax的post请求。我用了一个简单的django的demo作为后端。

django代码

------------- url.py ------------- 
path('test/', views.test),


------------- views.py ------------- 
def test(request):
    if request.method == "POST":
        print("start ----- test")
        name = request.POST.get('name')
        age = request.POST.get('age')
        print('my name is {name},and my age is {age}'.format(name=name, age=age))
        return HttpResponse(JsonResponse({"name":name, "age":age}))
    return render(request, "test.html")

前段代码

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
</head>

<body>
姓名: <input type="text" id="name"> <br>
年龄: <input type="text" id="age"><br>

<button>点击</button>
<p></p>
</body>
<script>
    $(function () {
        $('button').click(function () {
            var name = $('#name').val();
            var age = $('#age').val();
            $.ajax({
                url:'/test/',
                type:'POST',
                data:{'name':name,'age':age},
                success:function (data) {
                    console.log(data)
                    $('p').text("您输入的数据是姓名: "+JSON.parse(data)["name"]+" ,年龄是"+JSON.parse(data)["age"])
                }
            })
        })
    })
</script>
</html>

ajax_post

简述
1. 后端django 启动一个url /test。收到前端数据,然后数据序列化发送返回json
2. 前端收到后端数据,反序列化。
也就是前端在input框输入数据发送给后台,后台在返回给前端,前端拿到数据后在按钮下面插入p标签