このような結果のプロパティとしてのアクセス名result.name[i]
基本的に、結果には、匿名型で定義したのと同じように、両方とも配列であるnameと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);
});
}
});
}
name配列内のアイテムを$each
反復処理すると、そのアイテムがコールバックの2番目のパラメーターであるitemに渡されます。
それで
$.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のリストを返します。この場合、そもそもなぜそれらが2つの別々のリストであるのかを再考する必要があります。たぶん、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);
});