jQuery中的$.getJSON、$.ajax、$.get、$.post的區別
使用見Flask(python)異步(ajax)返回json格式數據
①.$.getJSON
$.getJSON()是專門為ajax獲取json數據而設置的,並且支持跨域調用,其語法的格式為:
getJSON(url,[data],[callback])
- url:string類型, 發送請求地址
- data :可選參數, 待發送 Key/value 參數 ,同get,post類型的data
- callback :可選參數,載入成功時回調函數,同get,post類型的callback
$.getJSON("{{ url_for('form_data') }}",params, function (result) {
$("#myDiv").append("hello world1"); console.log(obj.username + "<br>"); });
②.$.ajax
$.ajax
是 jQuery 底層 AJAX 實現,$.ajax
是一種通用的底層封裝,$.ajax(
)請求數據之后,則需要使用回調函數,有beforeSend、error、dataFilter、success、complete等。
格式:
$.ajax({
url:”路徑”,
type:”post/get”,
datatype:”json”, //成功的回調函數 success:function(data){ alert(“回調函數成功了”); }, //失敗的回調函數 error:function(){ alert(“服務器請求失敗”); }, //發送請求前調用,可以放一些“正在加載”之類的話 beforeSend:function(){ alert(“正在加載”); } });
例如:
$.ajax({
"url": "{{ url_for('form_data') }}", "type": "POST", "data": params, "success": function (obj) { $("#myDiv").append("hello world") console.log(obj.username + "<br>") }, "error": function (obj) { console.log(obj) }, "dataType": "json", "async": true });
③.$.get
$.get
是簡單易用的高層實現,我們使用$.get
方法,jQuery會自動封裝調用底層的$.ajax
。
$.get
只處理簡單的 GET 請求功能以取代復雜 $.ajax
,請求成功時可調用回調函數。不支持出錯時執行函數,否則必須使用$.ajax
。
$.get( url ,[data] ,[callback] )
- url:string類型,ajax請求的地址。
- data:可選參數,object類型,發送至服務器的key/value數據會作為QueryString附加到請求URL中。
- callback:可選參數,function類型,當ajax返回成功時自動調用該函數。
例如:
$.get("{{ url_for('form_data') }}", params, function (obj) {
$("#myDiv").append("hello world") console.log(obj.username + "<br>"); }, "json");
④.$.post
$.post
是簡單易用的高層實現,我們使用$.post
方法,jQuery會自動封裝調用底層的$.ajax
。
$.post
只處理 post請求功能以取代復雜 $.ajax
。請求成功時可調用回調函數。不支持出錯時執行函數,否則必須使用$.ajax
。
$.post(url,[data],[callback],[type])
這個方法和$.get()用法差不多,唯獨多了一個type參數,那么這里就只介紹type參數吧,其他的參考上面$.get()的。
- type:type為請求的數據類型,可以是html,xml,json等類型,如果我們設置這個參數為:json,那么返回的格式則是json格式的,如果沒有設置,就和.get()返回的格式一樣,都是字符串的。
例如:
$.post("{{ url_for('form_data') }}", params, function (obj) {
$("#myDiv").append(obj.username + "<br>") console.log(obj); }, "json");