Я работаю над веб-приложением электронной коммерции. Есть модуль списка желаний, который я пытаюсь реализовать. Я добавляю продукты в список пожеланий, используя вызовы ajax, а также удаляя его с помощью ajax. Добавляющая часть работает нормально, но у меня есть проблема с удалением части. Я пытаюсь сделать это, сделав ajax-вызов для извлечения элементов списка пожеланий из базы данных и динамического добавления кнопки удаления с помощью jquery. Хотя я знаю, что мне нужно использовать функцию .live
для присоединения к ней события, которое я сделал, но когда я нажимаю на кнопку, все элементы, которые присутствуют в списке желаний, удаляются. Я вижу, что несколько запросов ajax были сделаны в консоли под вкладкой сети, и я не понимаю, почему, хотя я щелкнул его только один раз. Ниже приведен фрагмент моего кодаЗапрос Ajax называется несколько раз, хотя мне нужно только один раз?
$.ajax({
type: "POST",
url: "fetchdata1",
data: "cat=" + cat,
success: function(data) {
productContainer.innerHTML = "";
var $productContainer = $('#productContainer');
$.each(data, function(key, value) {
if (value['newVar'] === 1) {
$productContainer.append("<div id='productBox' class='grid_3'>\n\
<a href='product.jsp?id=" + value['id'] + "'><img src='" + value["image"] + "'/></a><br/>\n\
<a href='product.jsp?id=" + value['id'] + "'><span class='black'>" + value['name'] + "</span></a><br/>\n\
<span class='black'>By " + value['company'] + "</span><br/><span class='red'>RS." + value['price'] + "</span>\n\
<br/><br/><a id='remove' href='#'>REMOVE</a></div>");
foo(value['id']);
} else {
$productContainer.append("<div id='productBox' class='grid_3'>\n\
<a href='product.jsp?id=" + value['id'] + "'><img src='" + value["image"] + "'/></a><br/>\n\
<a href='product.jsp?id=" + value['id'] + "'><span class='black'>" + value['name'] + "</span></a><br/>\n\
<span class='black'>By " + value['company'] + "</span><br/><span class='red'>RS." + value['price'] + "</span></div>");
}
});
}
});
function foo(value) {
var pid = value;
$('#remove').live("click", function() {
$.ajax({
type: "POST",
url: "removeFromWishlist",
data: "pid=" + pid,
success: function(response) {
}
});
});
В первом запросе Аякса я выборки продуктов из базы данных затем добавить кнопку удалить в ней динамически затем вызвать функцию foo
которые прикрепляются событие щелчка, используя .live
функцию, а затем сделать вызовите базу данных, чтобы удалить ее. Эй, ребята, я не профессионал в Интернете, так что легко, если я совершу какую-то глупую ошибку.
Спасибо!
это не работает –
Я отредактировал разметку. что я редактирую, я использую атрибут пользовательских данных HTML для хранения идентификатора и получения его в событии нажатия кнопки, а затем вызывает foo() для регистрации события сразу после завершения цикла. – vun
Он все еще не работает, и я не понимаю 'var pid = $ (this) .data (" pid ");' почему вы не передаете какое-либо значение в аргументе foo? –