نحوه استفاده از خروجی کنترلر که به صورت JSON
با سلام و درود خدمت اساتید محترم
برای جستجو در سایتم ترجیح دادم به صورت AJAX کار کنم برای همین تکه کد زیر را نوشتم
پارامتر ها به کنترلر ارسال و لیستی از مدل برمیگرده اما نمیدونم چجوری این لیست در جی کوئری قابل پیمایش هستش
لطفا کد هامو بررسی کنید و راهنمایی کنید تشکر.
function Search() {
$.ajax({
url: "/doctor/Home/SearchPeopleByName1/",
data: "keyword=" + $('#appendprepend2').val(),
type: "GET",
contentType: "application/json;charset=UTF-8",
dataType: "json",
success: function(result) {
$.map(result,function(param,index) {
$('#appendprepend2').val($('#appendprepend2').val() + param.Name);
});
},
error: function(errormessage) {
alert(errormessage.responseText);
}
});
return false;
}
public JsonResult SearchPeopleByName1(string keyword)
{
System.Threading.Thread.Sleep(2000);
ApplicationDbContext myDbContext = new ApplicationDbContext();
myDbContext.Configuration.ProxyCreationEnabled = false;
var data = myDbContext.UserProfiles.Where(f =>
f.ApplicationUser.UserProfile.Name.StartsWith(keyword));
return Json(data.ToArray(),JsonRequestBehavior.AllowGet);
}
3 پاسخ
سلام به شما دوست عزیز.
json توی jquery به شکل یک آبجکت شناسایی میشه و لازم نیست که شما کاری بکنید فقط باید ازش استفاده کنید. یعنی اگر یک لیست دریافت می کنید و طبق کد شما این لیست توی متغیر result قرار میگیرد شما فقط باید یک حلقه بذارید و تک تک عناصر آن حلقه رو پیمایش کنید.
توی این لینک توضیحات کامل داده شده
سلام و احترام
ممنون از پاسخگویی
دقیقا مشکل من همین حلقه هستش که هر کاری میکنم ایراد داره ! توی اون لینکی که زحمت کشیدید دقیقا تمام کارایی که خودم انجام دادم را انجام داده به جز همون حلقه !
درست شد !
متوجه مشکلم شدم
function Search() {
$.ajax({
url: "/doctor/Home/SearchPeopleByName1/",
data: "keyword=" + $('#appendprepend2').val(),
type: "GET",
contentType: "application/json;charset=UTF-8",
dataType: "json",
success: function(result) {
var i = 0;
for (i; result.length >= i ; i++) {
$('#appendprepend2').val($('#appendprepend2').val() + result[i].Name);
}
},
error: function(errormessage) {
alert(errormessage.responseText);
}
});
return false;
}