$.ajax可以通過設置指定的參數(shù)來調(diào)用服務端json數(shù)據(jù)接口。通過設置dataType參數(shù)來告訴jQuery以json格式對返回數(shù)據(jù)進行解析。這種技術經(jīng)常被用于調(diào)用Web API,使用json對象進行異步數(shù)據(jù)的傳輸。
$. ajax({ url:"/getUserInfo", type:"GET", dataType:"json", success:function(data) { console.log(data); }, error:function(jqXHR) { console.log("Error:" + jqXHR.status); } });
上述代碼中的dataType屬性設置為"json",則jQuery自動將返回數(shù)據(jù)解析為JSON格式,因此我們可以在回調(diào)函數(shù)中直接訪問json對象的屬性。如果返回的數(shù)據(jù)格式與設置的dataType不同,則jQuery將無法正確解析數(shù)據(jù),通常會在error回調(diào)中返回錯誤信息。
若要手動在ajax請求中序列化數(shù)據(jù)以供服務器處理,則需要將processData屬性設置為false,contentType屬性設置為"application/json",并將data屬性轉變?yōu)镴SON字符串。
$. ajax({ url:"/updateUserInfo", type:"POST", contentType:"application/json", processData:false, data:JSON.stringify({ name:"Tommy", age:20, email:"tommy@example.com" }), success:function(data) { console.log(data); }, error:function(jqXHR) { console.log("Error:" + jqXHR.status); } });
上述代碼中的data屬性已將JSON對象轉換為JSON字符串,服務器可以使用RequestBody注釋接收名為UserInfo的JSON對象參數(shù)及其屬性。