這個問題比從Js調用Web方法稍微複雜一點。從Javascript調用ASP.NET 2.0 Web服務
這是我在ASP.Net側得了代碼:
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
public class WebService : System.Web.Services.WebService
{
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Xml)]
public KError GetAppServer(int version, ref KServerInfo serv, ref KUserMessage msg)
{
......
}
}
凡KError
,KServerInfo
和KUserMessage
是簡單的序列化類,只有在它的字符串和整數。
當在.Net環境中使用此服務時,傳遞對複雜類型的引用沒有問題,但它不適用於Js。
我已經嘗試了很多選擇(谷歌並沒有真正幫助這件事)傳遞引用到服務器和味精,但服務不斷回覆500 - 內部服務器錯誤。錯誤描述說ASP.Net無法從json數據實例化serv和msg。
這裏是我的js部分:
var app = {
version : 1,
SessionID : "''",
Path : "''",
Login : "''",
Pwd : "''",
UserID : 0
};
var jd = { version : 1, 'appSrv': app, 'msg': msg };
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "http://localhost:3965/api.asmx/GetAppServer",
data: JSON.stringify(jd),
//data: JSON.stringify(jd),
dataType: "json",
success: AjaxSucceeded,
error: AjaxFailed
});
,這裏是我從服務器獲取確切的錯誤:
類型的\ u0027API.code.KServerInfo & \ u0027定義無參數的構造函數
你以前http://encosia.com/using-complex-types-to-make-閱讀本呼叫服務,不太複雜/? – Tariqulazam
您可以添加JS請求代碼的一些和平,以便我們可以確定問題嗎? –
是的,我沒看過那篇文章,但沒有幫助 –