jquery ajax post方法将json数据发布到特定url并检索特定的webservice

时间:2010-08-25 08:22:41

标签: c# asp.net json jquery

我有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; 

        }

    }
}

3 个答案:

答案 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)