码迷,mamicode.com
首页 > Web开发 > 详细

Ajax

时间:2018-11-07 11:23:54      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:场景   这一   注意   mit   ima   zh-cn   head   3.3   感受   

一、准备知识

什么是json?

JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。
它基于ECMAScript(w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。
简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

技术分享图片

合格的json对象:

["one", "two", "three"]
{"one": 1, "two": 2, "three": 3}
{"names": ["张三", "李四"] }
[{ "name": "张三"}, {"name": "李四"}]

不合格的json对象:

{ name: "张三", age: 32 }  # 属性名必须使用双引号
[32, 64, 128, 0xFFF]  # 不能使用十六进制值
{ "name": "张三", "age": undefined }  # 不能使用undefined
{ "name": "张三",
  "birthday": new Date(Fri, 26 Aug 2011 07:13:10 GMT),
  "getName":  function() {return this.name;}  # 不能使用函数和日期对象
}

stringify与parse方法

JavaScript中关于JSON对象和字符串转换的两个方法:

JSON.parse():用于将一个 JSON 字符串转换为 JavaScript 对象

JSON.parse({"name":"pd"});
JSON.parse({name:"pd"});  # 错误
JSON.parse([18,undefined]);  # 错误

JSON.stringify():用于将 JavaScript 值转换为 JSON 字符串

JSON.stringify({"name":"pd"})

二、Ajax简介

AJAX(Asynchronous Javascript And XML)翻译成中文就是"异步Javascript和XML"。即使用Javascript语言与服务器进行异步交互,传输的数据为XML(当然,传输的数据不只是XML,现在更多使用json数据)

AJAX除了异步的特点外,还有一个就是:浏览器页面局部刷新;(这一特点给用户的感受就是在不知不觉中完成了请求和响应过程)

场景:

技术分享图片

优点:

  • AJAX使用Javascript技术向服务器发送异步请求
  • AJAX无须刷新整个页面
  • 因为服务器响应内容不再是整个页面,而是页面中的部分内容,所以AJAX性能高

jQuery实现Ajax示例:

技术分享图片
<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>ajax_demo</title>
</head>
<body>
<input type="text" id="i1">+
<input type="text" id="i2">=
<input type="text" id="i3">
<button type="submit" id="btn">提交</button>
<script type="text/javascript" src="/static/jquery-3.3.1.min.js"></script>
<script>
    $("#btn").on("click", function () {
        var i1 = $("#i1").val();
        var i2 = $("#i2").val();
        $.ajax({
            url:"/ajax_add/",
            type: "GET",
            data: {"i1": i1, "i2": i2},
            success:function (ret) {
                $("#i3").val(ret)
            }
        })
    })
</script>
</body>
</html>
ajax_demo.html
技术分享图片
def ajax_demo(request):
    return render(request, "ajax_demo.html")


def ajax_add(request):
    i1 = request.GET.get("i1")
    i2 = request.GET.get("i2")
    ret = int(i1) + int(i2)
    return HttpResponse(ret)
views.py
技术分享图片
url(r"^ajax_demo/$", views.ajax_demo),
url(r"^ajax_add/$", views.ajax_add),
urls.py

三、jQuery实现的Ajax

data参数中的键值对,如果值不为字符串,则需要将其装换成字符串类型;如:"hehe": JSON.stringify([1, 2, 3])

<script>
    $("").click(function () {
        $.ajax({
            url: "/test/",
            type: "POST",
            data: {username: "pd", password: 123},
            success: function (data) {
                alert(data)
            },

            // ---------- error ----------
            error: function (jqXHR, textStatus, err) {
                // jqXHR: jQuery增强的xhr
                // textStatus: 请求完成状态
                // err: 底层通过throw抛出的异常对象,值与错误类型有关
                console.log(arguments);
            },

            // ---------- complete ----------
            complete: function (jqXHR, textStatus) {
                // jqXHR: jQuery增强的xhr
                // textStatus: 请求完成状态 success | error
                console.log(statusCode: %d, statusText: %s, jqXHR.status, jqXHR.statusText);
                console.log(textStatus: %s, textStatus);
            },

            // ---------- statusCode ----------
            statusCode: {
                403: function (jqXHR, textStatus, err) {
                    console.log(arguments);  //注意:后端模拟errror方式:HttpResponse.status_code=500
                },

                400: function (jqXHR, textStatus, err) {
                    console.log(arguments);
                }
            }

        })

    })
</script>

 

 

 

 

 

1

Ajax

标签:场景   这一   注意   mit   ima   zh-cn   head   3.3   感受   

原文地址:https://www.cnblogs.com/believepd/p/9920537.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!