jquery ajax post метод для отправки данных json по определенному URL и извлечения в определенном веб-сервисе - PullRequest
1 голос
/ 25 августа 2010

У меня есть 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");
                }
            }
        });

Это конкретный код веб-службы, где я получаю имя пользователя, как я могу получить много значений, переданных из этого паттикового URL-адреса, например, мне нужно получить имя пользователя, пароль, электронную почту, фонено и т. Д ...

    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 ]

1 голос
/ 25 августа 2010

Ну, ваш сервисный метод может принимать строковый массив, чтобы получить несколько имен пользователей как i / p.

public bool CheckUserNameAvailability(string[] userNames)

Чтобы передать значения из java-скрипта, используйте нотацию массива java-script. Например,

   data: '{ userNames: ["Name1", "Name2", "Name3"] }'

По второму вопросу метод может вернуть объект пользователя со всеми соответствующими свойствами для запрашиваемого пользователя. Например, у вас может быть другой метод

public User GetUserDetails(string userName)

где пользователь - класс с соответствующими свойствами.

Чтобы вызвать этот метод сервиса, вам нужно обновить URL из вашего JS следующим образом:

url:"AjaxService.asmx/GetUserDetails"

Ваша служба может иметь несколько веб-методов, и вам необходимо соответствующим образом изменить URL. Теперь возвращенный пользовательский объект может использоваться в JS как любой объект javascript, например, используйте response.d.Name для получения имени пользователя, response.d.Email для электронной почты и т. д.

1 голос
/ 25 августа 2010

Попробуйте использовать метод JSON.stringify, который позаботится о правильном кодировании данных вместо объединения строк:

url: 'AjaxService.asmx/CheckUserNameAvailability',
data: JSON.stringify({ 
    userName: userName, 
    password: 'foo', 
    email: 'foo@bar.com' 
}),
dataType: 'json'
0 голосов
/ 25 августа 2010

Если вы публикуете данные в веб-сервисе, вы просто передаете несколько параметров, например:

 data:"{'userName':'" + userName + "','password':'" + password + "','email':'" + email + "'  }",

Вам также необходимо изменить свой веб-метод:

public bool CheckUserNameAvailability(string userName, string password, string email)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...