تکراری لود شدن باکس ها در partial view
سلام در قطعه کد های زیر من دستور هر بار لود شدن اطلاعات از دیتایس رو گذاشتم مشکل من اینه نمیدونم چرا بعضی وقتا تابع GetData () چند بار فراخوانی میشه و اجرا میشه ! و مثلا میبینی برای متغیر pageindex چند بار مقدار 1 ثبت میشه و اجرا میشه و نتیجش میشه ظاهر شدن چند باکس تکراری ! کسی میتونه مشکلش رو پیدا کنه :متفکر:
قسمت کنترلر :
public ActionResult GetData(int pageIndex)
{
var query = (from a in db.Tbl_UrlUser
where a.Status != null
orderby a.Id descending
select a);
//5 تا 5تا نمایش میدهد باکس
int take = 5;
int Skip = (pageIndex * take) - take;
return PartialView("ProductPartial", query.Skip(Skip).Take(take));
}
قسمت پارشیال ویو: ProductPartial
@foreach (var item in Model)
{
<div class="col-lg-3">
@if (item.pic == null)
{
<a id="thumb" target="_blank" href="~/home/iframe?url=@item.Url"> <img src="~/home/Saveimage?url=@item.Url" width="180" height="180" alt="@item.Url" class="img-responsive img-rounded" targe="blank" ata-toggle="tooltip" data-placement="top" title="@content" /> </a>
<br />
}
else
{
<a id="thumb" target="_blank" href="~/home/iframe?url=@item.Url"> <img src="~/images/@item.pic" width="180" height="180" alt="@item.Url" class="img-responsive img-rounded" targe="blank" data-toggle="tooltip" data-placement="top" title="@content" /> </a>
<br />
}
</div>
}
قسمت ویو (اصلی) کد جاوا اسکریپت (از اینجا صدا زده میشه تابع GetData():
<script type="text/javascript">
var pageIndex = 1;
var size = 1650;
$(document).ready(function () {
//بار اول صدا زده میشود و 5 باکس نمایش میدهد
GetData();
$(window).scroll(function () {
if ($(this).height() <= 768) {
if ($(this).scrollTop() >size) {
// بر اساس سایز اسکرول صفحه سایت دوباره صدا زده میشود تابع زیر
GetData();
size = size + 100;
}
}
});
});
function GetData() {
$.ajax({
type: 'GET',
url: '/home/GetData',
data: { "pageindex": pageIndex },
//dataType: 'json', //Because the GetData now return the partialview content instead if json result
success: function (data) {
if (data != null) {
// اجرا شدن و نمایش باکس ها در ای دی زیر
$("#container").append(data);
//یک واحد اضافه میشود بعد از هر نمایش
pageIndex++;
}
},
beforeSend: function () {
$("#loading").delay(0).fadeIn(9000);
},
complete: function () {
$("#loading").delay(0).hide
(2000);
},
error: function () {
//alert("Error while retrieving data!");
}
});
}
</script>
نقل قول: تکراری لود شدن باکس ها در partial view
همینطور که میبینید بعضی از باکس ها تکراری هستن
ضمیمه 148602
نقل قول: تکراری لود شدن باکس ها در partial view
کسی اصلا این کارو انجام داده؟ من میخوام مثل سایت دیوار موس میارم آحر محصولات بعدی لود شن
نقل قول: تکراری لود شدن باکس ها در partial view
شرط اسکرول رو اصلاح کنید.
https://stackoverflow.com/a/3898152
https://stackoverflow.com/a/9439807
یک متغیر با مقدار false ایجاد کنید.
قبل از ارسال درخواست ، چک کنید اگر متغیر false بود مقدار رو به true تغییر بدید و درخواست ارسال بشه. اگر مقدار true بود یعنی هنوز درخواست قبلی تمام نشده. بعد از پایان درخواست متغیر را false کنید.
نقل قول: تکراری لود شدن باکس ها در partial view
الان من طبق گفته شما متغیری با مقدار false تعربف کردم ولی اونجایی که نوشتید باید مقدار رو به true تبدیل کنید دقیقا نمیدونم کجا باید این کارو بکونم از 9تا محصول 6تاشو میاره بعدش به قولی شما تو true گیر میکنه
var gog=false;
$(window).scroll(function () {
if ($(window).scrollTop() >= ($(document).height() - $(window).height())*0.7){
if (gog==false){
gog=true;
GetData();
}
}
});
});
نقل قول: تکراری لود شدن باکس ها در partial view
یکی جواب بده بدجور کارم گیر
مشکل اینه هربار اسکرول بالا پایین میکنم انگار رو دکمه هر بار کلیک میکنیم اینم میاد هی تابع getdata() اجرا می کنه و تکراری میده بیرون
جالب وقتی در ابتدای تابع getdata() از دستور alert() استفاده میکنم همه مشکلات حل میشه ! وقفه با مسیج باکس ایجاد میشه درست میشه ولی خب من نمیخوام اون alert نمایش داده بشه
نقل قول: تکراری لود شدن باکس ها در partial view
function GetData() {
if (gog == true)
return;
$.ajax({
type: 'GET',
url: '/home/GetData',
data: { "pageindex": pageIndex },
//dataType: 'json', //Because the GetData now return the partialview content instead if json result
success: function (data) {
if (data != null) {
// اجرا شدن و نمایش باکس ها در ای دی زیر
$("#container").append(data);
//یک واحد اضافه میشود بعد از هر نمایش
pageIndex++;
}
},
beforeSend: function () {
gog = true;
$("#loading").delay(0).fadeIn(9000);
},
complete: function () {
$("#loading").delay(0).hide
(2000);
},
error: function () {
//alert("Error while retrieving data!");
},
always(function() {
gog = false;
}
});
1 ضمیمه
نقل قول: تکراری لود شدن باکس ها در partial view
خیلی ممنون درست شد و کار میکنه صحیح:قلب: این سایت خیلی شبیه دیوار هستش برای مشتری طراحی کردم
ضمیمه 148851