jquery Метод ajax post для отправки данных json по определенному URL-адресу и получения определенного веб-сервиса

I есть запрос ajax для отправки данных в веб-сервис asmx, как я буду отправлять несколько значений данных в виде данных 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; 

        }

    }
}
1
задан Jamie Hutton 19 December 2011 в 15:57
поделиться

3 ответа

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

public bool CheckUserNameAvailability(string[] userNames)

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

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

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

public User GetUserDetails(string userName)

, где User — это класс с соответствующими свойствами.

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

url:"AjaxService.asmx/GetUserDetails"

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

1
ответ дан 2 September 2019 в 21:53
поделиться

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

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

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

public bool CheckUserNameAvailability(string userName, string password, string email)
0
ответ дан 2 September 2019 в 21:53
поделиться

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

url: 'AjaxService.asmx/CheckUserNameAvailability',
data: JSON.stringify({ 
    userName: userName, 
    password: 'foo', 
    email: 'foo@bar.com' 
}),
dataType: 'json'
1
ответ дан 2 September 2019 в 21:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: