您好,登錄后才能下訂單哦!
實驗多次,其實比較簡單,只是走了不少彎路,現在總結一下,
環境: VS2015
2.添加一個service接口(這個可以不用,我習慣了),接口中定義需要發布的幾個方法。
interface ISystemUserSvr
{
[OperationContract]
[WebGet]
List<SystemUser> RetrieveUser();
[OperationContract]
[WebInvoke(RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)]
List<SystemUser> RetrieveBy(string loginId, string userName);
[OperationContract]
[WebInvoke(RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)]
List<SystemUser> RetrieveByObj(SystemUser user);
}
其中,第一個方法使用Get方式,其余兩個使用Post方式接收參數。Post是默認的方式,這里也可以不用設置,包括Request和Response的設置都是默認值。
方法實現就簡單了,直接寫就可以了。這里只是舉個例子
public List<SystemUser> RetrieveUser()
{
return (new SystemUserBO()).Retrieve();
}
public List<SystemUser> RetrieveBy(string loginId, string userName)
{
return (new SystemUserBO()).Retrieve(loginId, userName, 0, 0);
}
public List<SystemUser> RetrieveByObj(SystemUser user)
{
return (new SystemUserBO()).Retrieve(user.LoginId, user.UserName, 0, 0);
}
web.config配置,基本不需要特別配置,使用MS配置編輯器(VS自帶),注意ReaderQuotas設置就行,把最大長度都放到最大就好。
客戶端調用,把幾種調用方式都列一下吧
Get方式,無參數
$.ajax({
contentType: 'application/json;charset=utf-8',
method: "get",
type: "get",
dataType: "json",
url: "SystemUserSvr.svc/Retrieve",
success: function (result) {
$.each(result.d, function (n, value) {
$('#ajaxResult').append(value.UserName + "<p>" + n);
}
);
}
});
});
Post方式,傳Json字符串參數
$.ajax({
contentType: 'application/json;charset=utf-8',
method: "post",
type: "post",
data: JSON.stringify({ "LoginId": "R", "UserName": "" }),
dataType: "json",
url: "SystemUserSvr.svc/RetrieveBy",
success: function (result) {
$.each(result.d, function (n, value) {
$('#ajaxResult').append(value.UserName + "<p>" + n);
}
);
}
});
});
Post方式,傳Json對象
$.ajax({
contentType: 'application/json;charset=utf-8',
method: "post",
type: "post",
data: JSON.stringify({ "user": { "LoginId": "R", "UserName": "王" } }),
dataType: "json",
url: "SystemUserSvr.svc/RetrieveByObj",
success: function (result) {
$.each(result.d, function (n, value) {
$('#ajaxResult').append(value.UserName + "<p>" + n);
}
);
}
});
Post傳參最需要注意的就是那個contentType的設置, contentType: 'application/json;charset=utf-8'不能漏掉,否則,傳參可能不成功。另外.net WCF 返回的數據有可能是d對象,所以在解析返回數據的時候,需要特別注意一下,這里的例子直接使用了result.d,從而獲得d對象的值。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。