1. 程式人生 > >jQuery(Ajax)

jQuery(Ajax)

ngs type 顏色 spl 不同 ase document 沒有 導致

1、jQuery

  一個JavaScript 庫,極大的簡化了JS 編程

  jQuery庫包含以下功能:

    • HTML 元素選取
    • HTML 元素操作
    • CSS 操作
    • HTML 事件函數
    • JavaScript 特效和動畫
    • HTML DOM 遍歷和修改
    • AJAX
    • Utilities      

  除了上述功能,它提供了海量的插件(官方,非官方)

2、安裝

  (react可以直接npm install但是用不著,react自己就可以處理)

  下載jQuery,解壓後,一個開發用額,一個min是壓縮後的部署用

  技術分享圖片

    第二個是第一個的壓縮文件,多行變成一行。

  <script src="jquery.js"></script>

3、基本語法

  $(selector).action()

    • $ 定義jQuery-----jQuery對象
    • 選擇符(selector)“查詢” 和“查找” HTML 元素
    • jQuery 的action() 執行對元素的操作

  文檔就是函數

  為了防止文檔加載完成之前就執行jQuery 代碼,需要一個網頁加載完的函數

  $(document).ready(funnction() {

    /* jQuery functions go here */

  });

  可以簡寫:

  $(function() {

   /* jQuery functions go here */ 

  } 

 

  註意:如果直接使用 <scrpit>執行,function,可能下面還沒有加載完,導致出錯,所以jQuery,先加載後調用。這樣才是安全的。

4、元素選擇器

  jQuery 使用css 選擇器來選取HTML 元素

  $("p") 選取p元素

  $("p.intro") 選取所有 class="intro"的 <p> 元素

  $("p#demo")選取所有id=“demo” 的<p> 元素

5、屬性選擇器

  jQuery使用XPath表達式來選擇帶有給定屬性的元素

  $("[ href]" ) 選取所有帶有 href 屬性的元素

  $("[ href = ‘#‘]") 選取所有帶有href值等於 # 的元素

  $("[href != ‘#‘]") 選取所有帶有href值 不等於 # 的元素

  $("[href $= ‘.jgp‘ ]") 選取所有href 值以 .jgp結尾的元素

6、jQuery事件函數

  為jQuery 對象增加事件回調函數

  測試: 

 1 <html>
 2 
 3 <head>
 4     <title>test page</title>
 5     <meta charset="utf-8">
 6     <style type="text/css">
 7     </style>
 8     <script src="jquery.js"></script>
 9     <script type="text/javascript">
10         $(function(){
11             $(#main).css(color,red)  
12             // $("button").click() 只是點擊事件
13             // $("button").click(function(){
14             //     // this 這是dom的this,即target   <button style="display: none;">test click</button>  none改為block按鈕又出現了
15             //     // 這裏是用的jQuery的對象,所以用$ 包裝
16             //     $(this).hide() // 一點就消失       
17             // })
18 
19             var flag = true
20             $("button.testclick").click(function(event){
21                 console.log(event.target)  // <button class="testclick">new click</button>
22                 $(#root).css(color,flag?red:blue);
23                 flag = !flag;
24             }) ;
25         });
26     </script>
27 </head>
28 <body>
29     <div id="main">test text</div>
30     <h2 id=‘root‘>test  test</h2>
31    <hr />
32    <button>test click</button>
33    <button class=‘testclick‘>new click</button>
34 </body>
35 
36 </html>

    技術分享圖片 技術分享圖片

    註:     

1 $("button.testclick").click(function(event) ---- 設置click時間回調
2 $("button.testclick").click() ----調用click

   測試:table 奇偶行顏色不同

 1 <html>
 2 
 3 <head>
 4     <title>test page</title>
 5     <meta charset="utf-8">
 6     <style type="text/css"></style>
 7     <script src="jquery.js"></script>
 8     <script type="text/javascript">
 9         $(function(){
10               var trs = $(".detail tr");
11             console.log(trs) // 獲取到tr
12             trs.each(function(index,domEle){
13                 console.log(domEle) //dom元素,需要變成jquery對象
14                 $(domEle).css("backgroundColor", index%2?blue:yellow);
15             })
16         });
17     </script>
18 
19     <style type="text/css">
20         table, td {
21             border: rgb(112, 9, 9) solid 1px;
22         }
23         table {
24             border-collapse:collapse;
25             width: 50%
26         }
27         td {
28             padding: 5px;
29         }
30     </style>
31 </head>
32 <body>
33    <hr />
34     <table class=‘detail‘>
35         <tr>
36             <td>1</td>
37             <td>test1</td>
38         </tr>
39         <tr>
40             <td>1</td>
41             <td>test2</td>
42         </tr>
43     </table>
44 </body>
45 
46 </html>

  技術分享圖片

  獲取屬性:  

1          $("button").click(function(){
2             //     // this 這是dom的this,即target
3             //     // 這裏是用的jQuery的對象,所以用$ 包裝
4                 console.log(this)
5                 console.log($(‘#main‘).attr(‘id‘)) //獲取屬性id   
6             })

7、Ajax

   jQuery對XMLHttpRequest組件的調用接口實現了 封裝,更加方便調用

  默認是異步請求:

  GET:

    註意:

    技術分享圖片 

    技術分享圖片

    測試:

      技術分享圖片

       1、技術分享圖片 2、 技術分享圖片 

       3、 技術分享圖片

      技術分享圖片

      測試代碼:

 1 <html>
 2 
 3 <head>
 4     <title>test page</title>
 5     <meta charset="utf-8">
 6     <style type="text/css"></style>
 7     <script src="jquery.js"></script>
 8     <script type="text/javascript">
 9         $(function(){
10             $(button.ajaxget).click(function() {
11                 console.log(=========================)
12                 // get只能處理200系列的,否則只能用原生的 $.ajax
13                 // $.get(‘http://127.0.0.1:8000/user/show‘,
14                 // $.get(‘http://127.0.0.1:8000/user/show?id=1&name=jack&name=tom‘,
15                 $.get(http://127.0.0.1:8000/user/show?id=1,{age:22},
16                     function(resdata){ //回調函數
17                         console.log(--------)
18                         console.log(resdata);
19                     })
20             })
21         }) ;  
22     </script>     
23 
24 </head>
25 
26     <body>
27         <div id="main">test text</div>
28         <h2 id=‘root‘>test  test</h2>
29     <hr />
30     <hr />
31     <button class=‘ajaxget‘>GET</button>
32 
33     </body>
34 </html>

      

  POST:

    技術分享圖片

    1、技術分享圖片 2、技術分享圖片

    3、技術分享圖片

  POST請求提交JSON:

      技術分享圖片  

    直接點擊 技術分享圖片 出現下面錯誤:

    技術分享圖片

   技術分享圖片

    也就是說跨域訪問如果不設置這3種Content-type,就會觸發preflight OPTIONS 請求(預檢請求)

    錯誤請求頭:

      技術分享圖片

    正確請求頭:

      技術分享圖片

  解決方案:

    使用網站來訪問網頁:

      Django的靜態文件配置如下:

        1‘settingszhong INSTALLED_APPS確保有django.contrib.dtaticfiles

        2、settings中定義靜態路徑 STATIC_URL=‘/static/‘

        3、settings中: 

        STATICFILES_DIRS=[
         os.path.join(BASE_DIR,"static"),
        ]

        4、項目根目錄下創建 static 文件夾,將html文件和 jQuery.js放進去(沒有壓縮的版本)

        https://docs.djangoproject.com/en/1.11/howto/static-files/

jQuery(Ajax)