【发布时间】:2012-12-11 02:04:43
【问题描述】:
这个问题比仅仅从 Js 中调用 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中不起作用。
我已经尝试了很多选项(谷歌在这个问题上并没有真正帮助)传递对 serv 和 msg 的引用,但服务不断回复 500 - Internal server error。错误描述说 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 类型定义无参数构造函数
【问题讨论】:
-
你在encosia.com/…之前读过这篇文章吗?
-
能否添加一些 JS 请求的和平代码以便我们识别问题?
-
是的,我确实读过那篇文章,但没有帮助
-
你为什么使用 ref 作为参数?
标签: c# javascript asp.net jquery asmx