中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

AJAX入門學習-3:基于JQuery的AJAX實現(以Django為例)

發布時間:2020-07-23 05:57:42 來源:網絡 閱讀:852 作者:小生博客 欄目:開發技術

小生博客:http://xsboke.blog.51cto.com

                        -------謝謝您的參考,如有疑問,歡迎交流

基于jQuery的AJAX實現(最底層的方法:$.ajax)

$.ajax(
url:
type: "POST" | "GET" -- 請求方式
)

一. 兩種快捷方式

    $.get(url,[data],[callback],[type])
    $.post(url,[data],[callback],[type])

    url:URL(接口)
    data:數據
    callback:回調函數,當你請求成功之后,需要執行的函數
    type:數據類型

二. 演示$.get 和 $.post

2.1 url.py 文件

        from django.contrib import admin
        from django.conf.urls import url
        from django.urls import path
        from jquery_ajax import views

        urlpatterns = [
            path('admin/', admin.site.urls),
            url(r'jquery_test',views.jquery_test),
            url(r'jquery_get',views.jquery_get),
        ]

2.2 views.py文件

        def jquery_test(req):
            return render(req,"ajax_jquery.html")

        def jquery_get(req):
            print(req.GET)
            return HttpResponse("OK")

2.3 因為需要使用jquery所以settings.py需要將靜態文件引入

        STATIC_URL = '/static/'
        STATICFILES_DIRS = (
            os.path.join(BASE_DIR,"static"),
        )

2.4 ajax_jquery.html模板文件

        <!DOCTYPE html>
        <html lang="en">
        <head>
            <meta charset="UTF-8">
            <title>Title</title>
        </head>
        <body>
        <button onclick="fun1();">ajax提交</button>

        <script src="/static/jquery-3.3.1.min.js"></script>
        <script>

            function fun1() {
                test()
            }

            function test() {
                // $.post("/jquery_get")
                // $.post("/jquery_get",{name:"dashan"});

                // 回調函數 function,當server端拿到name數據并且返回內容這個過程完成后
                // 執行function,就叫做回調函數
                // function 中,第三個參數就是js的XMLHTTP對象
                $.post("/jquery_get",{name:"dashan"},function(data,stateText,jqh){
                    // console.log(arguments); // 返回后臺返回的數據、返回狀態、返回一個對象

                    // 輸出返回的數據
                    console.log(data);

                    // 輸出返回的狀態
                    console.log(stateText);

                    // 輸出返回的對象,里面包括http狀態碼,返回內容等等
                    // 這里的jqh名字是可變的,就是js中的ajax的實例對象
                    console.log(jqh);
                    alert(data)
                });

                // 第二種get傳輸參數的方式比第一種好在,
                // 如果涉及到編碼,那么如果使用第一種,需要我們手動轉碼后寫入
                // 如果是第二種,那么JQuery會自動轉碼
                // $.get("/jquery_get?a=12");  //傳輸參數,通過編碼
                // $.get("/jquery_get",{name:"dashan"}); //傳輸參數,通過鍵值對

            }
        </script>
        </body>
        </html>

三. 其他API

    $.getJson()         =       $.get(type:Json)
        $.getJson()與$.get()是一樣的,只不過就是最后一個參數type必須是json數據了。一般同域操作用$.get(),$.getJson最主要是用來進行jsonp跨域操作的

    $.getscript("js文件",函數)      -   使用AJAX請求,獲取和運行JavaScript

四. $.getscript示例
4.1 ajax_jquery.html模板文件

        <!DOCTYPE html>
        <html lang="en">
        <head>
            <meta charset="UTF-8">
            <title>Title</title>
        </head>
        <body>
        <button onclick="fun1();">ajax提交</button>

        <script src="/static/jquery-3.3.1.min.js"></script>
        <script>

            function fun1() {
                test()
            }

            function test() {
                $.getscript("/static/test.js",function () {
                        alert(add(2,5))   //返回7
                    }
                )
            }
        </script>
        </body>
        </html>

4.2 test.js靜態文件

        function add(s,y) {
            return s+y
        }

五. $.ajax 的兩種使用方式(以鍵值對的方式表示每個參數)

5.1 第一種形式

        url在大括號里面
        $.ajax({
            url:"http://"
            type:"POST",
            data:{
                name:"dashan",
                age:22
            },
            processData:false,          # 此參數默認為true,設置是否轉碼
            contentType:
        })

5.2 第二種形式

        url在大括號外面
        $.ajax(url,{

        })

5.3 參數解釋:

        data:當前ajax請求要攜帶的數據,是一個json的object對象,ajax方法就會默認地把它
            編碼成某種格式(urlencoded:?a=1&a=2)發送給服務端,此外ajax默認以get方式發送請求。

        processData:聲明當前的data數據是否進行轉碼或預處理,默認為true,即預處理;
            如果為false,那么data:{a:1,b:2}會調用json對象的tostring()方法,即
            {a:1,b:2}.toString(),最后得到一個{object,Object}形式的結果,該屬性的
            意義在于,當data是一個dom結構或者xml數據時,我們希望數據不要進行處理,
            直接發過去,就可以將其設置為true

        contentType:用于設置請求頭的內容類型
            默認值:"application/x-www-form-urlencoded" ,發送信息至服務器時內容編碼類型。
            用來指明當前請求的數據編碼格式;        urlencoded:?a=1&b=2;     
            如果想以其他方式提交數據,比如:contentType:"application/json",即向服務器發送
            一個json字符串

        traditional:一般是我們的data數據有數組時會用到,默認為false會對進行深層次迭代
                $.ajax({
                    url:"http://"
                    type:"POST",
                    data:{
                        name:"dashan",
                        age:[3,4]               # 如果不使用traditional,服務器接收到的數據為{'name':'dashan','age[]',['3','4']}
                    },
                    traditional:true            # 使用了traditional,則接收到的數據為{'name':['dashan'],'age':['3','4']}
                })

        dataType: 預期服務器返回的數據類型,服務器端返回的數據會根據這個值解析后,傳遞給回調函數。
                就是告訴我服務端我要接收什么樣的數據類型

                值:"json"和"xml"

                示例:
                    view函數:
                        import json

                        def jquer_get(req):
                            dic={'name':"dashan"}
                            return HttpResponse(json.dumps(dic)) # 只要數據符合json字符串規則,這里就不需要使用dumps進行轉換

                    模板文件:
                        $.ajax({
                            url:"/jquer_get"
                            type:"POST",
                            data:{
                                name:"dashan",
                                age:[3,4]   
                            },
                            traditional:true,
                            dataType:"json",
                            success:function (data) {   #  success是回調函數
                                console.log(data)       # 返回一個json對象: Object:{name:"dashan"}
                            }
                        })

                .parse()和.stringify()
                    parse用于從一個字符串中解析出json對象,如:
                        var str = '{"name":"dashan","age":"22"}'

                        結果:
                            JSON.parse(str)

                            Object
                            age:"23"
                            name:"dashan"
                        注意:單引號在{}外面,每個屬性名必須使用雙引號,否則會拋出異常

                    stringify()用于從一個對象解析出字符串,如:
                        var a = {a:1,b:2}

                        結果:
                            JSON.stringify(a)

                            "{"a":"1","b":"2"}"

        success:當ajax成功響應后執行的函數
        error:當ajax響應失敗后執行的函數
        complete:不管ajax有沒有成功響應都會執行的函數

        statusCode{             # 根據不同的ajax響應狀態碼進行操作
            '403':function(){

            },

            '404':function(){

            }
        }
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

金阳县| 嘉定区| 金沙县| 萍乡市| 卓尼县| 林周县| 彰武县| 丰顺县| 江油市| 灵武市| 临漳县| 涡阳县| 仁化县| 稻城县| 札达县| 皮山县| 家居| 宝坻区| 平原县| 宣威市| 轮台县| 凉山| 乳源| 古浪县| 巴楚县| 都江堰市| 酒泉市| 东莞市| 锦州市| 麻阳| 广水市| 阿鲁科尔沁旗| 新安县| 鸡东县| 湾仔区| 泗水县| 贵南县| 巴彦淖尔市| 哈巴河县| 团风县| 墨脱县|