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...