日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

学习笔记(九)——JSON 和 AJAX

發(fā)布時(shí)間:2025/3/21 javascript 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 学习笔记(九)——JSON 和 AJAX 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 一、JSON
    • 1.1、JSON 是什么?
    • 1.2、JSON 字符串轉(zhuǎn) JS 對(duì)象
    • 1.3、JS 對(duì)象轉(zhuǎn) JSON 字符串
  • 二、前后端交互
  • 三、AJAX
    • 3.1、什么是 AJAX ?
    • 3.2、AJAX 使用

一、JSON

1.1、JSON 是什么?

JSON(JavaScript Object Notation): 就是一個(gè)特殊格式的字符串, 這個(gè)字符串可以被任意的語(yǔ)言所識(shí)別,而且可以轉(zhuǎn)換為任意語(yǔ)言中的對(duì)象。主要用于數(shù)據(jù)的交互。

JSON 值可以是

  • 數(shù)字(整數(shù)或浮點(diǎn)數(shù))
  • 字符串(在雙引號(hào)中)
  • 邏輯值(true 或 false)
  • 數(shù)組(在方括號(hào)中)
  • 對(duì)象(在花括號(hào)中)
  • 空值null
  • 注意
    ① 字符串嵌套:單引號(hào)套雙引號(hào),雙引號(hào)套單引號(hào)
    ② json和js對(duì)象的格式一樣,只不過(guò)json字符串中屬性名必須要加雙引號(hào),其它和js語(yǔ)法一致,如:

    var obj = '{"name":"monkey","age":18}'; //對(duì)象 var obj2 = '[{"name":"小明"},{"name":"小習(xí)"}]'; // 數(shù)組

    1.2、JSON 字符串轉(zhuǎn) JS 對(duì)象

    JSON 函數(shù) parse() 可用于將 JSON 字符串轉(zhuǎn)換為 JavaScript 對(duì)象。

    示例

    var obj1 = '[{"name":"小明"},{"name":"小習(xí)"}]'; var js = JSON.parse(obj1); console.log(typeof js); console.log(js[1].name); console.log(js[0].name);

    結(jié)果:

    object 小習(xí) 小明

    1.3、JS 對(duì)象轉(zhuǎn) JSON 字符串

    JSON 函數(shù) stringify() 可用于將 JS 對(duì)象轉(zhuǎn)換為 JSON 字符串。

    示例

    var obj1 = [{name:"小明"},{name:"小習(xí)"}];//這里屬性名name可加雙引號(hào)也可以不加 var js = JSON.stringify(obj1); console.log(typeof js); console.log(js); //注意這里轉(zhuǎn)為JSON字符串后,屬性名自動(dòng)加了雙引號(hào)

    結(jié)果:

    string [{"name":"小明"},{"name":"小習(xí)"}]

    二、前后端交互

    示例
    python代碼:

    import tornado.ioloop import tornado.web# 需求:在頁(yè)面輸入第一個(gè)數(shù)和第二個(gè)數(shù)之后,點(diǎn)擊提交按鈕,把輸入的數(shù)據(jù)打印在控制臺(tái) class MainHandler(tornado.web.RequestHandler):def get(self):#轉(zhuǎn)發(fā)self.render("it.html") #這里的it.html是自己寫的html,這里和python代碼在同一級(jí)文件夾def post(self):#獲取前端發(fā)送過(guò)來(lái)的數(shù)據(jù)print(self.get_argument('numone')) #注意這里的numone和numtwo是前端提交的name值print(self.get_argument('numtwo'))if __name__ == "__main__":application = tornado.web.Application([# / 代表前端程序訪問(wèn)的路徑(r"/", MainHandler),])application.listen(8889) #8889:端口號(hào)tornado.ioloop.IOLoop.current().start()

    html代碼:

    (注意這里代碼我就寫重要的部分) <body><form action="/" method="post">請(qǐng)?jiān)谳斎肟騼?nèi)分別輸入數(shù)據(jù):<input type="text" name="numone">+<input type="text" name="numtwo">=<input type="submit" id="btn" value="提交"></form> </body>

    訪問(wèn)步驟:

  • 運(yùn)行python文件
  • 在瀏覽器的地址欄手動(dòng)輸入: localhost:端口號(hào) 或者 127.0.0.1:端口號(hào)
  • 注意
    使用表單的方式提交,如果需要更新內(nèi)容,必需重載整個(gè)網(wǎng)頁(yè)面。


    三、AJAX

    異步:調(diào)用不會(huì)立即得到結(jié)果,而是在調(diào)用方給出結(jié)果之前,先做其他的某些事情。
    同步:調(diào)用某一個(gè)東西,調(diào)用方必須要等到結(jié)果之后才會(huì)繼續(xù)往下執(zhí)行。

    3.1、什么是 AJAX ?

    AJAX 全稱 Ansync JavaScript and XML,是一門異步的加載技術(shù),局部刷新。

    AJAX = 異步 JavaScript 和 XML。

    AJAX 是一種用于創(chuàng)建快速動(dòng)態(tài)網(wǎng)頁(yè)的技術(shù)。

    通過(guò)在后臺(tái)與服務(wù)器進(jìn)行少量數(shù)據(jù)交換,AJAX 可以使網(wǎng)頁(yè)實(shí)現(xiàn)異步更新。這意味著可以在不重新加載整個(gè)網(wǎng)頁(yè)的情況下,對(duì)網(wǎng)頁(yè)的某部分進(jìn)行更新。

    傳統(tǒng)的網(wǎng)頁(yè)(不使用 AJAX)如果需要更新內(nèi)容,必需重載整個(gè)網(wǎng)頁(yè)面。


    3.2、AJAX 使用

    Ajax的使用分為原生和jq兩種,需要掌握的jq的,原生了解就行。

    書寫格式

    $.ajax({//數(shù)據(jù)提交格式 post 或 get"type":"post",//后臺(tái) url 前端程序訪問(wèn)的路徑"url":"/", //傳出的數(shù)據(jù) name:自己去的名字"data":{"name1":數(shù)據(jù)1,"name2":數(shù)據(jù)1···},//服務(wù)器成功返回?cái)?shù)據(jù)data"success":function(data){·····} });

    示例(post方式提交)
    (咳咳,求兩數(shù)之和,其實(shí)要寫的話挺簡(jiǎn)單,這里就當(dāng)是用來(lái)做前后端交互的簡(jiǎn)單示例)
    python代碼:

    import tornado.ioloop import tornado.web# 需求:在頁(yè)面輸入第一個(gè)數(shù)和第二個(gè)數(shù)之后,點(diǎn)擊提交按鈕,數(shù)據(jù)發(fā)送到后端,后端把輸入的數(shù)據(jù)之和返回前端 class MainHandler(tornado.web.RequestHandler):def get(self):#轉(zhuǎn)發(fā)self.render("it.html")def post(self):#獲取前端發(fā)送過(guò)來(lái)的數(shù)據(jù)并求和num1 = int(self.get_argument('data1')) #注意data1是前端Ajax提交數(shù)據(jù)的屬性名,要一致num2 = int(self.get_argument('data2'))sum = num1+num2#self.write() 將數(shù)據(jù)返回給前端result = {"sum":sum}self.write(result)if __name__ == "__main__":application = tornado.web.Application([# 代表前端程序訪問(wèn)的路徑 這里注意和前端一致(r"/", MainHandler),])application.listen(8889)tornado.ioloop.IOLoop.current().start()

    html代碼:

    <!DOCTYPE html> <html><head><meta charset="utf-8"><title>示例</title><style>input{width: 50px;}</style></head><body>計(jì)算兩數(shù)之和:<br><input type="text">+<input type="text">=<input type="text"><button id="btn">計(jì)算</button><script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js"></script><script>var inp = $("input");$("#btn").click(function () {var data1 = inp.eq(0).val();var data2 = inp.eq(1).val();//傳遞值$.ajax({//數(shù)據(jù)提交格式 post 和 get"type":"post",//后臺(tái) url 這里注意和服務(wù)端一致"url":"/",//傳出的數(shù)據(jù)"data":{"data1":data1,"data2":data2},"success":function(data){inp.eq(2).val(data.sum)}});});</script></body> </html>

    結(jié)果:

    示例(get方式提交)
    python代碼:

    import tornado.ioloop import tornado.web#get提交會(huì)調(diào)用get函數(shù),所以我們重寫個(gè)類,然后關(guān)聯(lián)下就行了 class GetWay(tornado.web.RequestHandler):def get(self):# 獲取前端發(fā)送過(guò)來(lái)的數(shù)據(jù)并求和num1 = int(self.get_argument('data1')) # 注意data1是前端Ajax提交數(shù)據(jù)的屬性名,要一致num2 = int(self.get_argument('data2'))sum = num1 + num2# self.write() 將數(shù)據(jù)返回給前端result = {"sum": sum}self.write(result)class MainHandler(tornado.web.RequestHandler):def get(self):#轉(zhuǎn)發(fā)self.render("it.html")if __name__ == "__main__":application = tornado.web.Application([# 代表前端程序訪問(wèn)的路徑 這里注意和前端一致(r"/", MainHandler),# 要調(diào)用重寫類,記得把前端程序訪問(wèn)路徑改下(r"/r", GetWay),])application.listen(8889)tornado.ioloop.IOLoop.current().start()

    html代碼:

    (相比post提交,這里只要修改一點(diǎn)代碼,我就不全寫了) $.ajax({//數(shù)據(jù)提交格式 post 和 get"type":"get",//后臺(tái) url 這里注意和服務(wù)端一致"url":"/r",//傳出的數(shù)據(jù)"data":{"data1":data1,"data2":data2},"success":function(data){inp.eq(2).val(data.sum)} });

    (這里結(jié)果我就不演示了,結(jié)果和用post方式提交一樣)

    注意:正常來(lái)講我們還是用 post 提交方式好,因?yàn)間et方式會(huì)在地址欄顯示請(qǐng)求信息,但是地址欄能容納的信息有限,約為4-5kb,若請(qǐng)求數(shù)據(jù)過(guò)大則容易出錯(cuò),而post不會(huì)。故使用post方式可以保證信息的安全。

    《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

    總結(jié)

    以上是生活随笔為你收集整理的学习笔记(九)——JSON 和 AJAX的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。