1. 程式人生 > >二十六、python學習之前端(九):JQuery資料互動

二十六、python學習之前端(九):JQuery資料互動

一.juqery物件:

js中的物件,就是python中的字典:

1定義方法:

定義方法1:

var obj1 = {name:"張三", "age":18, "address":"三里屯"}

定義方法2:

var obj2 = new Object();
obj2.name = "李斯";
obj2.['age'] = 28;

2 獲取值:

獲取方法1:

var name = obj["name"];
var name2 = obj2.name;

1.3 應用:

以後開發使用比較多的是:數組裡邊套物件

二、json:

1.什麼是json:

  json是 JavaScript Object Notation 的首字母縮寫,單詞的意思是javascript物件表示法,這裡說的json指的是類似於javascript物件的一種資料格式物件,目前這種資料格式比較流行,逐漸替換掉了傳統的xml資料格式。
  json資料物件類似於JavaScript中的物件,但是它的鍵對應的值裡面是沒有函式方法的,值可以是普通變數,不支援undefined,值還可以是陣列或者json物件。
  與JavaScript物件寫法不同的是,json物件的屬性名稱和字串值需要用雙引號引起來,用單引號或者不用引號會導致讀取資料錯誤。

2.把json型別的字串,轉換成物件:

var str1 =  '{"name":"張三","age":18,"address":"三里屯"}';
var obj1 = JSON.parse(str1)

3.把物件轉換成json型別的字串

var obj2 = {name: "李四", 'age': 18, "address": "三里屯"};
var str2 = JSON.stringify(obj2)

三、ajax:

1.什麼是ajax:

  ajax一個前後臺配合的技術,它可以讓javascript傳送http請求,與後臺通訊,獲取資料和資訊。ajax技術的原理是例項化xmlhttp物件,使用此物件與後臺通訊。jquery將它封裝成了一個函式$.ajax(),我們可以直接用這個函式來執行ajax請求。

  ajax需要在伺服器環境下執行。

2.為什麼有ajax:

重新整理頁面一部分(往往伴隨著資料庫), 就會有非同步提交.(ajax)

3.ajax的語法使用:

$.ajax使用方法

常用引數:

  • url 請求地址
  • type 請求方式,預設是’GET’,常用的還有’POST’
  • dataType 設定返回的資料格式,常用的是’json’格式,也可以設定為’html’
  • data 設定傳送給伺服器的資料
  • success 設定請求成功後的回撥函式
  • error 設定請求失敗後的回撥函式
  • async 設定是否非同步,預設值是’true’,表示非同步

語法:

以前的寫法:

$.ajax({
    url: '',
    type: 'GET',
    dataType: 'json',
    contentType:'application/json',	# 這個很重要
    data:{}
    success:function(dat){},
    error:function(){}
});

新的寫法(推薦):

$.ajax({
    url: '/change_data',
    type: 'GET',
    dataType: 'json',
    contentType:'application/json',
    data:{'code':300268}
})
.done(function(dat) {
    alert(dat.name);
})
.fail(function() {
    alert('伺服器超時,請重試!');
});

$.ajax的簡寫方式(沒有錯誤處理)

$.ajax按照請求方式可以簡寫成$.get或者$.post方式

$.get("/change_data", {'code':300268},
function(dat){
    alert(dat.name);
});

$.post("/change_data", {'code':300268},
function(dat){
    alert(dat.name);
});

4.json的跨域問題(重點了解一下):

4.1 什麼是跨域問題:

由於瀏覽器同源策略,凡是傳送請求url的協議、域名、埠三者之間任意一個與當前頁面地址不同即為跨域。存在跨域的情況:

  • 網路協議不同,如http協議訪問https協議。
  • 埠不同,如80埠訪zhouchengfei問8080埠。
  • 域名不同,如 zhouchengfei.top 訪問 baidu.com
  • 子域名不同,如 ss.zhouchengfei.top 訪問 def.zhouchengfei.top。
  • 域名和域名對應ip,如www.a.com訪問20.205.28.90。

4.2 如何解決跨域訪問:

  • porxy代理: 通過nginx代理;
  • CORS 【Cross-Origin Resource Sharing】;
  • jsonp: 通過動態插入一個script標籤;

ajax處理跨域訪問使用"jsonp"屬性

 // ajax非同步提交。
    $.ajax({
        url: 'https://sug.so.360.cn/suggest',
        type: 'get',
        dataType: 'jsonp',
        contentType:'application/json',
        data: {'word': $(this).val()},
    })
    .done(function(dat){
        console.log(dat)
    })
    .fail(function(){
        alert('伺服器錯誤!!!')
    })
})