имя доступа как свойство результата, как этот result.name[i]
По существу, результат будет содержать имя и ImageUrl, которые являются как массивы, так же, как вы определили в вашем анонимном типе, так что ваш код должен модифицировать так, чтобы отобразить предупреждение для каждого имени в массиве имя
function StartSearch(text) {
$.ajax({
url: '/Shared/Search',
type: 'POST',
data: { SearchText: text },
dataType: 'json',
success: function (result) {
$.each(result.name, function (i, item) {
alert(item);
});
}
});
}
как $each
перебирает элементы в массиве имен, он будет передавать элемент ко второму параметру ваш обратный вызов, т. е. элемент.
так
$.each(result.name, function (i, item) {
alert(item);
});
всплывет имя каждого.
Примечания:
Вы можете изменить свойства на вашем анонимного типа, чтобы отразить, что они представляют собой набор:
return Json(new { UserNames = UserNames, ImageUrls = ImageUrls });
таким образом он будет иметь больше смысла, когда вы итерацию над ними в вашем функция успеха.
Как указал AlfalfaStrange, я не продемонстрировал, как вы можете получить доступ к обеим массивам. Что заставило меня подумать, какова связь между именами пользователей и URL-адресами изображений?
Это список изображений для пользователя? Возможно, вам следует подумать о создании конкретной модели для этого. Например, UserDisplayModel:
public class UserDisplayModel
{
public string UserName {get;set;}
public string ImageUrl {get;set;}
}
В контроллере возвращает список UserDisplayModels. Если это так, вам придется переосмыслить, почему они представляют собой два отдельных списка. Возможно, ImageUrl должно быть полем в таблице User.
Итак, когда вы возвращаете один список, например.
List<UserDisplayModel> users = //get users from db
return Json(new { Users = Users});
вы можете перебирать их в один раз в JS код:
$.each(result.Users, function (i, item) {
alert(item.Name);
alert(item.ImageUrl);
});
Вам действительно нужно сделать это внутри $ .each? Не может ли утверждение «за» быть непосредственно внутри успеха? Согласитесь с изменением POST на GET. –
В методе '.each'' i' - это каждый объект списка, поэтому вызов '.each' на' result' выполняет только итерацию по результату, поэтому первым объектом является первый список, следующий следующий - следующий. Чтобы перебирать элементы в каждом списке, требуется второй цикл. Например, в моем тесте '.each (result, function (i, item ({alert [i];}' дает имя каждого списка, в моем случае 'FirstList' и' SecondList'. –
с использованием 'alert (item); 'дает' [object] [object] .... ' –