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;
}
}
}
Ваш метод службы может принимать строковый массив для получения нескольких имен пользователей в качестве 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
для электронной почты и т. д.
Если вы отправляете данные в веб-сервис, вы просто передаете несколько параметров, например:
data:"{'userName':'" + userName + "','password':'" + password + "','email':'" + email + "' }",
Вам также необходимо изменить свой веб-метод:
public bool CheckUserNameAvailability(string userName, string password, string email)
Попробуйте использовать метод JSON.stringify
, который позаботится о правильном кодировании данных вместо объединения строк:
url: 'AjaxService.asmx/CheckUserNameAvailability',
data: JSON.stringify({
userName: userName,
password: 'foo',
email: 'foo@bar.com'
}),
dataType: 'json'