Jquery ajax方法分析

2021-06-28 23:34:18 字數 4357 閱讀 1565

jquery.ajax

( options )

有很多選項,介紹其中的幾個:

·datatype:想從伺服器得到哪種型別的資料。xml,html,script,json,jsonp,text

·success:請求成功後的處理函式

·type:以post或get的方式請求。預設get。put和delete也可以用,但並不是所有的瀏覽器都支援

·complete:不管請求成功還是錯誤,只要請求完成,可以執行的事件。

·beforesend:傳遞非同步請求之前的事件。

這次說解,使用firedebug來配合說解。

(一)請求ashx檔案,並新增ajax事件,新增緩衝提示

描述:請求資料,請求超時時間設定為5秒,如果超時,那麼輸出超時提示,且在這5秒中的等待過程中,提供等圖示,5秒之後,提示請求超時。

(1)ashx檔案

customer customer = new

customer ;

string strjson = newtonsoft.json.jsonconvert.serializeobject(customer);

system.threading.thread.sleep(1000*7);

context.response.write(strjson);

為了讓客戶端請求超時,服務設定延時7秒。

(2)ajax post請求

function ajax_ashx() );

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

},cache: false,

timeout: 5000,

error: function()

});}

設定超時時間5000ms,超時錯誤出示超時錯誤。

(3)設定客戶端請求等待圖示

·<

imgsrc

="images/loader.gif"

id="ajaximg"

/>找個小圖示

·為這個圖示設定ajax事件

$("#ajaximg").bind("ajaxsend", function() );

$("#ajaximg").bind("ajaxcomplete", function() );

function hide()

function show()

在客戶端5秒請求的時間限制下,請求超時,提示超時錯誤。

·在ashx端contenttype的設定對返回的資料沒有影響

·客戶端datatype也沒有影響,可以省略。

·在firebug裡可以看到返回的資料為:

所以可以按以前我說過的方法進行解析。

(二)正常請求,並解析

·ashx

customer customer = new

customer ;

customer customer2 = new

customer ;

list

_list = new

list

();_list.add(customer);

_list.add(customer2);

string strjson = newtonsoft.json.jsonconvert.serializeobject(customer);

system.threading.thread.sleep(1000 * 3);

context.response.write(strjson);

·ajax post

function ajax_ashxlist() );

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

},cache: false,

timeout: 5000,

error: function()

});}

·datatype要是json

·在firebug裡

[
,
]

雖然是字串,但這裡直接用就行,不用轉換為json物件。這一點我現在還不明白怎麼回事。

(三)請求ws

這次請求返回字串型別的web方法。

(1)hello

[webmethod]

public

string helloworld()

function ajax_webservicehello() ",

datatype: 'json',

success: function(data)

});}

·contenttype,data都不能為空,即使data為空,也要帶空引數

發現服務端請求到的資料是這樣的。所以,訪問時,要以data.d來訪問。(在.net3.5中)。但也可以如下訪問:

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

(2)customer

這次得到乙個客戶實體

[webmethod]

public

string getcustomer()

;string strjson = newtonsoft.json.jsonconvert.serializeobject(customer);

return strjson;

}function ajax_webservicecustomer() ",

datatype: 'json',

success: function(data) );

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

}});

}發現返回的也是以d為key的乙個object。

"}

這點應該注意。

(3)customer list

[webmethod]

public

string getcustomerlist()

;customer customer2 = new

customer ;

list

_list = new

list

();_list.add(customer);

_list.add(customer2);

string strjson = newtonsoft.json.jsonconvert.serializeobject(_list);

return strjson;

}function ajax_webservicecustomerlist() ",

datatype: 'json',

success: function(data) );

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

}});

}

,
]"
}

這也是乙個以d為key的物件。

(4)with para

[webmethod]

public

string getcustomerlistwithpara(int iunid)

;customer customer2 = new

customer ;

list

_list = new

list

();_list.add(customer);

_list.add(customer2);

var cus = from q in _list

where q.unid == iunid

select q;

string strjson = newtonsoft.json.jsonconvert.serializeobject(cus);

return strjson;

}function ajax_webservicecustomerlistwithpara() ",

datatype: 'json',

success: function(data) );

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

}});

}

]"
}

這也是乙個以d為key的物件。

綜上所述,在對web服務進行請求時:

·在.net3.5中,訪問web服務時,返回的元素是乙個以d為key的k/v對。如果要進行下一步解析,要認識d屬性。(這是在當web方法返回json字串時成立)

·在.net3.5中,訪問web服務,要對web服務新增修飾:[system.web.script.services.scriptservice] 否則,當.ajax()請求服務時,會有異常:

只能從指令碼中呼叫在類定義上有[scriptservice]屬性的 web 服務

Jquery ajax方法分析(二)

訪問ws,而web方法再是字串返回型別。這次通過response來響應請求。所處環境 net3.5,而webservice 不再新增修飾標籤 system.web.script.services.scriptservice 一 hello ws webmethod public void hello...

Jquery ajax方法分析(一)

jquery.ajax options 有很多選項,介紹其中的幾個 datatype 想從伺服器得到哪種型別的資料。xml,html,script,json,jsonp,text success 請求成功後的處理函式 type 以post或get的方式請求。預設get。put和delete也可以用,...

Jquery ajax方法分析(二)

訪問 ws,而 web方法再是字串返回型別。這次通過 response 來響應請求。所處環境 net3.5 而webservice 不再新增修飾標籤 system.web.script.services.scriptservice 一 hello ws webmethod public void h...