不确定是否只是一天中的时间,缺少咖啡或过晚放纵过多的糖。除此之外,我正试图让这个工作。我不想更改/修改/添加新的Web服务方法。
我有一个asmx网络服务:
public UserLogin Login(UserLogin p_objUserLogin)
{
}
我需要挂起一个JQuery ajax调用。 UserLogin对象并不复杂:
public class UserLogin
{
public UserLogin();
public string Privileges { get; set; }
public string ClientCodeID { get; set; }
public UserDetails User { get; set; }
public string UserLoginMessage { get; set; }
public bool Valid { get; set; }
}
UserDetails对象非常大,包含更多数据。 (希望我不需要构建整个对象树来使其工作)。
public class UserDetails
{
public string CellPhone { get; set; }
public string Email { get; set; }
public string EncryptedPassword { get; set; }
public string FirstName { get; set; }
public string FullName { get; }
public string Initials { get; set;
public bool InService { get; set; }
public string LastName { get; set; }
public string Password { get; set; }
public byte[] Signature { get; set; }
public string SimCard { get; set; }
public int UserID { get; set; }
public string UserName { get; set; }
public SecurityRole UserSecurityRole { get; set; }
public Workgroup UserWorkgroup { get; set; }
}
我正在玩的剧本:
function CallService() {
var p_objUserLogin = {};
p_objUserLogin['ClientCodeID'] = "Test";
var DTO = { 'p_objUserLogin': p_objUserLogin };
$.ajax({
type: "POST",
url: "UtilityServices2006.asmx/Login",
data: JSON.stringify(DTO),
contentType: "application/json; charset=utf-8",
dataType: "json",
processData: true,
success: function (msg) {
alert(msg);
},
error: function (req, status, error) {
alert(req + ", " + status + ", " + error);
},
complete: function (req, status) {
alert(req + ", " + status);
}
});
}
任何帮助都会非常棒。
答案 0 :(得分:0)
确保您的webservice类和方法被装饰以处理传入的ajax / json请求:
[ScriptService]
public class MyService: WebService
{
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public UserLogin Login(UserLogin p_objUserLogin)
{
}
}
我不熟悉您用于配置有效负载对象的表示法(p_objUserLogin ['ClientCodeID'] =“Test”;)。我通常使用略有不同的表示法:
p_objUserLogin.ClientCodeID = 'Test';
然而,这可能是一个红色的鲱鱼 - 我不是JS对象专家,所以你的符号可能完全有效。
最后,我不确定JS是否会自动将您的对象转换为JSON(var DTO = {'p_objUserLogin':p_objUserLogin};)。我使用json2 library将JS对象显式序列化为JSON:
var DTO = { 'p_objUserLogin': JSON.stringify(p_objUserLogin) };
希望这可以帮助您解决问题。