PDA

View Full Version : غیر فعال شدن لینک



mahmood_20050
پنج شنبه 01 خرداد 1393, 07:58 صبح
سلام دوستان
من یه سری اطلاعات رو در قالب یک تیبل در یک متغیر ریختم و اونها رو به صورت JSON خروجی دادم. توی این اطلاعات یک لینکی هست که برای حذف همون رکورد جدول استفاده میشه.(حذف هم به صورت ایجکس)
حالا مشکل اینه که وقتی اطلاعات رو به صورت ایجکس چاپ میکنم لینک حذف کار نمیکنه... ولی همون صفحه وقتی رفرش میشه لینک کار میکنه دلیلش چیه لطفا کمک کنید
متد show_cart حاوی همون اطلاعات جدوله


public function add_to_card()
{
$id = $this->input->post('itemId');
$qty = '1';
$resAdd = $this->basket->AddItem($id, $qty);
$response = array('table_cart'=> $this->show_cart(),
'count_item'=>$this->basket->countItem(),
'total'=>$this->basket->totalCost()
);

header('Content-Type: application/json');
echo json_encode($response);

}


اینم کد ایجکس حذف رکورد:

$('a.butt_basket').click(function() {
var itemId = $(this).attr("name");
$.ajax({
type: "POST",
url: "<?=site_url()?>/home/add_to_card",
datatype:"json",
data: {itemId:itemId},
success: function(data){
var count_cart = (data.count_item > 0)?data.count_item+' مورد':'خالی';
$("span#count_cart").empty();
$("span#count_cart").append(count_cart);

$("div#basket").empty();
$("div#basket").append(data.table_cart);

$("#total_cart").empty();
$("#total_cart").append(data.total);

},
beforeSend:function()
{

}
});
});

اینم بگم قبل از اینکه جدول رو به روش ایجکس چاپ کنم این لینک کار میکرد

MRmoon
پنج شنبه 01 خرداد 1393, 09:24 صبح
سلام دوستان
من یه سری اطلاعات رو در قالب یک تیبل در یک متغیر ریختم و اونها رو به صورت JSON خروجی دادم. توی این اطلاعات یک لینکی هست که برای حذف همون رکورد جدول استفاده میشه.(حذف هم به صورت ایجکس)
حالا مشکل اینه که وقتی اطلاعات رو به صورت ایجکس چاپ میکنم لینک حذف کار نمیکنه... ولی همون صفحه وقتی رفرش میشه لینک کار میکنه دلیلش چیه لطفا کمک کنید
متد show_cart حاوی همون اطلاعات جدوله


public function add_to_card()
{
$id = $this->input->post('itemId');
$qty = '1';
$resAdd = $this->basket->AddItem($id, $qty);
$response = array('table_cart'=> $this->show_cart(),
'count_item'=>$this->basket->countItem(),
'total'=>$this->basket->totalCost()
);

header('Content-Type: application/json');
echo json_encode($response);

}


اینم کد ایجکس حذف رکورد:

$('a.butt_basket').click(function() {
var itemId = $(this).attr("name");
$.ajax({
type: "POST",
url: "<?=site_url()?>/home/add_to_card",
datatype:"json",
data: {itemId:itemId},
success: function(data){
var count_cart = (data.count_item > 0)?data.count_item+' مورد':'خالی';
$("span#count_cart").empty();
$("span#count_cart").append(count_cart);

$("div#basket").empty();
$("div#basket").append(data.table_cart);

$("#total_cart").empty();
$("#total_cart").append(data.total);

},
beforeSend:function()
{

}
});
});

اینم بگم قبل از اینکه جدول رو به روش ایجکس چاپ کنم این لینک کار میکرد

میشه خروجی رو هم بزارین وقتی با ایجکس چاپ می کنه؟؟؟

در ضمن به جای اینکه یه بار empty کنین یه بار append یک دفعه تابع html رو صدا بزنین تو جی کویری.

mahmood_20050
پنج شنبه 01 خرداد 1393, 09:57 صبح
زمانیکه روی لینک اضافه به سبد خرید کلیک میشه.محصولات به سبد خرید اضافه میشن.
119302
ولی بعد از اینکه محصولی اضافه میشه لینک حذف کار نمیکنه و دراپ دان لیست هم که تعدادو نشون میده (اونم با ایجکس تغییر میده جمع قیمت هارو) کار نمیکنه
اگه صفحه رفرش بشه کار میکنه
وقتی page source رو میبینم چون صفحه لود نشده چیزی از عناصر دیده نمیشه

plague
پنج شنبه 01 خرداد 1393, 19:48 عصر
کد ایجکس رو با رویداد .click که این رویداد برای المنت (دکمه / لینک ) هایی جواب میده که در هنگام لود شدن توی صفحه هستن نه چیزایی که بعد از لود شدن به صفحه اضافه میشن


برای اون موارد باید از .on یا در ورژن های قدیمی تر .live استفاده کنی که سینتکسشون رو آنلاین میتونی ببینی چجوریه

MRmoon
پنج شنبه 01 خرداد 1393, 20:13 عصر
کد ایجکس رو با رویداد .click که این رویداد برای المنت (دکمه / لینک ) هایی جواب میده که در هنگام لود شدن توی صفحه هستن نه چیزایی که بعد از لود شدن به صفحه اضافه میشن


برای اون موارد باید از .on یا در ورژن های قدیمی تر .live استفاده کنی که سینتکسشون رو آنلاین میتونی ببینی چجوریه

شما وقتی کالای جدید رو اضافه کردید دستور click رو دوباره اجرا کنید.

MMSHFE
پنج شنبه 01 خرداد 1393, 20:51 عصر
دستور click در jquery برای عناصری که موقع بارگذاری صفحه وجود دارن کار میکنه نه عناصری که بطور پویا اضافه میشن. برای این عناصر از دستور live استفاده کنید:
$(".delete").live('click', function() {
...
});
البته توی نسخه های بعد از 1.7 باید از دستور on استفاده کنید:
$(".delete").on('click', function() {
...
});

mahmood_20050
شنبه 03 خرداد 1393, 08:46 صبح
شما وقتی کالای جدید رو اضافه کردید دستور click رو دوباره اجرا کنید.

منظورتون رو متوجه نمیشم=>(دستور click رو دوباره اجرا کنید)

کد الان اینه ورژن جی کوئری 1.9 ولی بازم کار نمیکنه


$('a.remove_cart').on( "click", function() {
itemId = $(this).attr("name");
$.ajax({
type: "POST",
url: "<?=site_url()?>/home/remove_cart",
datatype:"json",
data: {itemId:itemId},
success: function(data){
if(data.ok==true) {
var count_cart = (data.count_item > 0)?data.count_item+' مورد':'خالی';
//$("span#count_cart").empty();
$("span#count_cart").html(count_cart);

//$("#total_cart").empty();
$("#total_cart").html(data.total);

$('table #tr'+itemId).remove().slidUp('slow');
}
else{
}
},
beforeSend:function()
{
$('table #tr'+itemId).animate({opacity:'0.6'});
}
});
});

plague
شنبه 03 خرداد 1393, 17:14 عصر
بجای
$('a.remove_cart').on( "click", function() {

بنویس
$(document.body).on('click', 'a.remove_cart', function() {

mahmood_20050
یک شنبه 04 خرداد 1393, 09:11 صبح
بجای
$('a.remove_cart').on( "click", function() {

بنویس
$(document.body).on('click', 'a.remove_cart', function() {



ممنون دوست عزیز کارت درسته.همینه.جواب داد