天天看點

Jquery .ajax方法分析(二)

通路ws,而web方法再是字元串傳回類型。這次通過response來響應請求。所處環境:.net3.5,而webservice 不再添加修飾标簽:[System.Web.Script.Services.ScriptService]

(一)Hello

·ws

[WebMethod]

    public void HelloWorld()

    {

        HttpResponse Response = HttpContext.Current.Response;

        Response.ContentEncoding = System.Text.Encoding.Default;

        Response.ContentType = "application/json";

        Response.Write("Hello World!");

    }

·ajax post

function ajax_wsHell() {

    $.ajax({

        type: "post",

        contentType: "application/json",

        url: "ajax_2.asmx/HelloWorld",

        success: function(data) {

            alert(data);

        }

    });

}

Hello World!

·對于純字串來說(不是json字串),響應的資料是真的字串。

(二)Customer

    public void GetCustomer()

        Customer customer = new Customer

{ Unid = 1, CustomerName = "宋江", Memo = "天魁星", Other = "黑三郎" };

        string strJson = Newtonsoft.Json.JsonConvert.SerializeObject(customer);

        Response.Write(strJson);

function ajax_wsCustomer() {

        url: "ajax_2.asmx/GetCustomer",

            var jsonObject = $.jsonToObject(data);

            var tt = '';

            $.each(jsonObject, function(k, v) {

                tt += k + ":" + v + "<br/>";

            });

            $("#divmessage").html(tt);

{"Unid":1,"CustomerName":"宋江","Memo":"天魁星","Other":"黑三郎"}

對于json字串來說,它傳回的是一個純的json字串,不再是以d為key的k/v對。而對于json字串來說,轉換到json對象很容易(. jsonToObject()方法,我以前的随筆中有介紹)。

(三)customer list

    public void GetCustomerList()

        Customer customer2 = new Customer

{ Unid = 2, CustomerName = "吳用", Memo = "天機星", Other = "智多星" };

        List<Customer> _list = new List<Customer>();

        _list.Add(customer);

        _list.Add(customer2);

        string strJson = Newtonsoft.Json.JsonConvert.SerializeObject(_list);

function ajax_wsCustomerList() {

        url: "ajax_2.asmx/GetCustomerList",

            $.each(jsonObject, function(k, v) {

            $.each(v, function(kk, vv) {

            tt += kk + ":" + vv + "<br/>";

                });

[

{"Unid":1,"CustomerName":"宋江","Memo":"天魁星","Other":"黑三郎"},

{"Unid":2,"CustomerName":"吳用","Memo":"天機星","Other":"智多星"}

]

可以看出,得到的也是純json字串。

(四)帶參數

    public void GetCustomerListWithPara(int iUnid)

        var cus = from q in _list

                  where q.Unid == iUnid

                  select q;

        string strJson = Newtonsoft.Json.JsonConvert.SerializeObject(cus);

function ajax_wsCustomerListWithPara() {

        url: "ajax_2.asmx/GetCustomerListWithPara",

        data: ({ iUnid: 1 }),

        dataType: "json",

            $.each(data, function(k, v) {

                $.each(v, function(kk, vv) {

                    tt += kk + ":" + vv + "<br/>";

[{"Unid":1,"CustomerName":"宋江","Memo":"天魁星","Other":"黑三郎"}]

這裡又傳回了一個json對象。而不是一個json串。而且,沒有給用戶端ajax請求添加 contentType參數。

綜述:

·對于請求由Response響應的json字串值,有很大的便利性,但對于帶參數的請求,傳回的是一個json對象,這可以直接處理。

·而web服務類不必添加修飾标簽,這在.net2.0中應該也是可以的,是普遍的。是以,在通過web服務實作ajax時,可以采用這一通用方法。

·.ajax()方法的參數要合适,否則會不出結果,其根源在于jquery類庫中對function :ajax的定義

·ajax方法是.getJSON(),.get(),.post()的根。而這三種方法是做為.ajax方法的一種特殊情況集來表達的。

部落格園大道至簡

<a href="http://www.cnblogs.com/jams742003/" target="_blank">http://www.cnblogs.com/jams742003/</a>

轉載請注明:部落格園

繼續閱讀