PDA

View Full Version : سوال: مشکل کش در درخواست ajax



numberone1
پنج شنبه 23 بهمن 1393, 16:18 عصر
سلام
من برای لود یک صفحه در یک صفحه دیگه از ایجکس استفاده کردم .
توی صفحه ای که قراره لود بشه یه سری کد های جی کوئری هست که قاعدتا باید حذف بشه ولی نمیشه

$.ajaxSetup({ cache: false });
$.ajax({
type: "GET",
cache: false,
url: url,
dataType: "html",
success: function (res) {
App.stopPageLoading();
$(pageContentBody).empty();
$(pageContentBody).html(' ');
pageContentBody.html(res);
App.fixContentHeight(); // fix content height
App.initAjax(); // initialize core stuff
},
error: function (xhr, ajaxOptions, thrownError) {
pageContentBody.html('<h4>Could not load the requested content.</h4>');
App.stopPageLoading();
}
});

هم 2 بار کش و غیر فعال کردم هم وقتی جواب درخواست ایجکس برمیگرده محتوای قبلی صفحه رو پاک میکنم .
قاعدتا باید اون کد های جی کوئری هم پاک بشه ولی وقتی اجرا میشن مشخص میشه که پاک نشدن! چون چند بار پشت سر هم اجرا میشن.(به تعداد دفعات لود صفحه)
چجوری میتونم script ها رو هم پاک کنم؟

id1385
پنج شنبه 23 بهمن 1393, 19:16 عصر
شما وقتی یک صفحه رو لود میکنی توی یه صفحه دیگه؛ هر چی تو اون صفحه هست (خروجی که تولید میشه) لود میشه و قاعده این است و اینکه میگید با غیر فعال کردن کش و ... اون کدا باید حذف بشن که این خودش خلاف قاعده و منطق هستش، شما صفحه ای رو که لود میکنید اینجا بزارید و گرنه با فانکشنی که برای درخواست نوشتید نمیشه گفت که چرا و چه چیز باید از اون صفحه لود بشه.

numberone1
پنج شنبه 23 بهمن 1393, 20:22 عصر
محتوای صفحه کد php هس مشکلی نداره لودش و درست لود میشه
مشکل اینه که علاوه بر کد های php یک سری کد های jquery هم هست که لود میشه توی صفحه
برای دفعه اول کد های جی کوئری یکبار لود میشه و درسته همه چیز
وقتی یک صفحه دوبار لود میشه کد جی کوئری که دفعه اول لود شده پاک نمیشه و همون جی کوئری برای بار دوم هم به صفحه اضافه میشه و با هر بار فراخوانی اون کد 2 بار اجرا میشه بجای یکبار
مثال این کد جی کوئری که با هر بار لود صفحه یک کپی ازش توی صفحه ایجاد میشه بدون اینکه قبلی ها پاک بشه

<script type="text/javascript">
$(document).ready(function() {
$(document).on('click', '.remove_image', function(event) {
event.preventDefault();
event.stopPropagation();
var element = $(this);
var del_id = element.attr("dot");
var pic_id = element.attr("title");
var info = 'remove_image=' + del_id + '&pic_id=' + pic_id;
if (confirm("آیا از حذف این عکس مطمئن هستید؟")) {
$.ajax({
type : "POST",
url : "ajax/users.php",
data : info,
success : function() {
}
});
$(this).parents(".bxm2").animate({
backgroundColor : "#fbc7c7"
}, "fast").animate({
opacity : "hide"
}, "slow");
return false;
}
return false;
});
});
</script>