1. 程式人生 > >jquery怎麼在header中設定請求資訊

jquery怎麼在header中設定請求資訊

jquery是js的類庫,js本身不能操作header,因為js是在瀏覽器載入頁面過程中才開始執行的
header需要伺服器端執行操作

如果是ajax,是可以設定header
$.ajax({
    url: "",
    data: {},
    type: "GET",
    beforeSend: function(xhr){xhr.setRequestHeader('X-Test-Header', 'test-value');},//這裡設定header
    success: function() {}
});

也就是setRequestHeader函式

現在ajax應用已經相當廣泛了,有很多不錯的ajax框架可供使用。ajax是一個非同步請求,也主要是一種客戶端的指令碼行為。那麼,如何在請求之前為請求新增特殊的一些頭部資訊呢?

下面是一個簡單的例子,我用jquery編寫,它的ajax函式中,有一個beforeSend方法,這個方法接受一個引數,就代表了發起非同步請求的XMLHttpRequest物件,我們可以用該物件的setRequestHeader方法實現我們的目的

為什麼要setRequestHeader?
比如,在及時通訊系統中,每次獲取訊息或者傳送訊息,都需要去判斷這個使用者是否還在連線中,通過設定"accessToken",就可以是實現正常通訊;"accessToken",就可以是實現正常通訊;
beforeSend: function(request) {
     request.setRequestHeader("accessToken", accessToken);
},

複製程式碼

 1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
 2 
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 4 <html xmlns="http://www.w3.org/1999/xhtml">
 5 <head runat="server">
 6     <title></title>
 7     <script src="jquery-1.3.2-vsdoc.js" type="text/javascript"></script>
 8     <script type="text/javascript" language="javascript">
 9         $(function() {
10             $("#test").click(function() {
11                 $.ajax({
12                     type: "GET",
13                     url: "default.aspx",
14                     beforeSend: function(request) {
15                         request.setRequestHeader("Test", "Chenxizhang");
16                     },
17                     success: function(result) {
18                         alert(result);
19                     }
20                 });
21             });
22         });
23     </script>
24 
25 </head>
26 <body>
27     <form id="form1" runat="server">
28     <div id="v">
29     </div>
30     <input type="button" value="測試" id="test" />
31     </form>
32 </body>
33 </html>

複製程式碼

<a data-cke-saved-href="http://images.cnblogs.com/cnblogs_com/chenxizhang/WindowsLiveWriter/ajaxRequestHeader_10A7C/image_2.png" href="http://images.cnblogs.com/cnblogs_com/chenxizhang/WindowsLiveWriter/ajaxRequestHeader_10A7C/image_2.png" class="thickbox"><img data-cke-saved-src="http://images.cnblogs.com/cnblogs_com/chenxizhang/WindowsLiveWriter/ajaxRequestHeader_10A7C/image_thumb.png" src="http://images.cnblogs.com/cnblogs_com/chenxizhang/WindowsLiveWriter/ajaxRequestHeader_10A7C/image_thumb.png" alt="image" width="712" height="615" /></a>  

你的關注和支援是對我最大的動力~

其實很簡單,首先如果是常見型別,則請直接設定 dataType 屬性

$.ajax({
    dataType: "json",
    type: "get",
    success: function (data) {
    }
});

設定 dataType 後,會去 accepts 屬性(此屬性會預置一些常用型別)中直接拿相應的型別新增到 Accept 中。

)%X02M](8[BKGW21{EY{0GD

如果想自己自定義 jQuery 中沒有的 Accept 內容,可以手動設定 accepts 屬性,使用 鍵值對 儲存,然後再設定 dataType 屬性為剛剛自定義的鍵。

複製程式碼

$.ajax({
    accepts: {
        xxx: "application/xxx"
    },
    dataType: "xxx",
    type: "get",
    success: function (data) {
    }
});

複製程式碼

當然還可以直接設定 headers 屬性,直接寫 Accept 的內容是什麼。

複製程式碼

$.ajax({
    headers: {
        Accept: "application/json; charset=utf-8"
    },
    type: "get",
    success: function (data) {
    }
});

複製程式碼