我有ajax请求将数据发布到asmx webservice,我将如何将多个数据值作为json数据发布到该URL
$.ajax(
{
type:"POST",
url:"AjaxService.asmx/CheckUserNameAvailability",
data:"{\"userName\":\"" + userName + "\"}",
dataType:"json",
contentType:"application/json",
success: function(response)
{
if(response.d == true)
{
$("#display").text("username is available and updated to database");
$("#display").css("background-color","lightgreen");
}
else
{
$("#display").text("username is already taken");
$("#display").css("background-color","red");
}
}
});
这是我检索用户名的特定网络服务代码,如何检索从该特定网址传递的许多值,例如我必须检索用户名,密码,电子邮件,phoneno等...
public class AjaxService : System.Web.Services.WebService
{
[WebMethod]
public bool CheckUserNameAvailability(string userName)
{
List<String> userNames = new List<string>() { "azamsharp", "johndoe", "marykate", "alexlowe", "scottgu" };
var user = (from u in userNames
where u.ToLower().Equals(userName.ToLower())
select u).SingleOrDefault<String>();
return String.IsNullOrEmpty(user) ? true : false;
}
}
}
答案 0 :(得分:1)
尝试使用JSON.stringify
方法来处理正确编码数据而不是连接字符串:
url: 'AjaxService.asmx/CheckUserNameAvailability',
data: JSON.stringify({
userName: userName,
password: 'foo',
email: 'foo@bar.com'
}),
dataType: 'json'
答案 1 :(得分:1)
好吧,你的服务方法可以接受字符串数组来获取多个用户名作为i / p。
public bool CheckUserNameAvailability(string[] userNames)
要从java-script传递值,请使用java-script数组表示法。例如,
data: '{ userNames: ["Name1", "Name2", "Name3"] }'
对于第二个问题,方法可以返回具有所请求用户的所有相关属性的用户对象。例如,您可以使用另一种方法
public User GetUserDetails(string userName)
其中User是具有相关属性的类。
要调用此服务方法,您必须按如下方式从JS更新URL:
url:"AjaxService.asmx/GetUserDetails"
您的服务可以有多种网络方法,您需要相应地更改网址。现在,返回的用户对象可以在JS中用作任何javascript对象,例如使用response.d.Name
获取用户名,response.d.Email
用于发送电子邮件等。
答案 2 :(得分:0)
如果您要将数据发布到网络服务,您只需传递多个参数:
data:"{'userName':'" + userName + "','password':'" + password + "','email':'" + email + "' }",
您还需要更改您的网络方法:
public bool CheckUserNameAvailability(string userName, string password, string email)