这个问题比从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请求代码的一些和平,以便我们可以确定问题吗? –
是的,我没看过那篇文章,但没有帮助 –