Как я могу вернуть значение id из div, уже заполненного через ajax - PullRequest
0 голосов
/ 04 января 2012

У меня возникли трудности с передачей правильной функции id обратно в AJAX.Я создаю генератор бюллетеней продукта, который позволяет добавлять элементы по их коду SKU (который работает отлично).Моя проблема заключается в том, что при нажатии на бюллетень предварительный просмотр этого бюллетеня загружается в div и показывает все продукты, связанные с этим бюллетенем.
Из этих результатов я пытаюсь добавить возможность удаления продукта избюллетеньПроблема в том, что значение, передаваемое обратно в AJAX, относится только к первому продукту.Он не будет отправлять значение, принадлежащее конкретному элементу, если это какой-либо другой элемент, кроме первого.

Это код (принадлежащий main.php), который загружается через AJAX в div и являетсяЗацикливается на каждом продукте, связанном с выбранным бюллетенем

    echo "<form name='myDelForm'>
    $news_gen_id<br>
    <input type='hidden' id='delccode' value='".$news_gen_id."'>
    <input type='hidden'     id='deledit' value='".$edit."'>
    <input type='button' onclick='ajaxDelCcode()' value='Delete' /><br></form>
    </td>";

Код AJAX (на index.php, где также находится div, вызывающий файл main.php) - это

function ajaxDelCcode(){
    var ajaxRequest;  // The variable that makes Ajax possible!
try{
    // Opera 8.0+, Firefox, Safari
    ajaxRequest = new XMLHttpRequest();
} catch (e){
    // Internet Explorer Browsers
    try{
        ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
        try{
            ajaxRequest = new 
ActiveXObject("Microsoft.XMLHTTP");
        } catch (e){
            // Something went wrong
            alert("Your browser broke!");
            return false;
        }
    }
}
// Create a function that will receive data sent from the server
ajaxRequest.onreadystatechange = function(){
        if(ajaxRequest.readyState == 4){
        var ajaxDisplay = document.getElementById("ajaxMain2");
        ajaxDisplay.innerHTML = ajaxRequest.responseText;
    }
}
var deledit = document.getElementById("deledit").value;
var delccode = document.getElementById("delccode").value;
var queryString = "?delccode=" + delccode + "&deledit=" + deledit;
ajaxRequest.open("GET", "main.php" + queryString, true);
ajaxRequest.send(null); 
}
//-->
</script>

В настоящее время, используя эти две части кода, я могу успешно удалить только первый продукт.Переменные delccode, по-видимому, не изменяются при зацикливании продуктов (хотя, когда я повторяю переменные во время цикла, он определенно изменяется на соответствующее значение ... он просто неправильно передает его обратно в AJAX.)

Я попытался взять код AJAX, поместить его в цикл продукта main.php и изменить имя функции во время каждого цикла (например, ajaxDelCcode $ news_gen_id ()), а также на саму кнопку, чтобы она вызывала AJAX.специфично для него.И это работает, если вы посещаете main.php напрямую ... но не из index.php после того, как main.php был вызван в div.

Я не могу понять, как передать правильное зацикленное значениеиз main.php в div, обратно к AJAX-коду на index.php

Может кто-нибудь помочь мне с этим?

Спасибо,

Дастин

Ответы [ 3 ]

0 голосов
/ 04 января 2012

Вместо сохранения идентификатора во входных данных, просто передайте его в качестве аргумента функции:

function ajaxDelCcode(delccode) { ...

<input type='button' onclick='ajaxDelCcode(\"".$news_gen_id."\")' value='Delete' />

Кроме того, я бы поменял кавычки на вашем месте.Или, что еще лучше, вместо использования echo, разбейте код PHP и просто напишите HTML:

<? ... ?><input type="button" onclick="ajaxDelCcode('<?= $news_gen_id ?>')" value="Delete" /><? ... ?>
0 голосов
/ 05 января 2012

Вот попробуйте это

1) добавьте jquery в ваш документ.

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

2) присвойте своим атрибутам имя входа

<input type='hidden' name='delcode' id='delccode' value='".$news_gen_id."'>
<input type='hidden' name='deledit' id='deledit' value='".$edit."'>

3) Используйте функцию, подобную этой, вместо всего этого кода выше

function ajaxDelCcode() {
  $.ajax({
    url: "main.php",
    type: "GET",
    dataType: "text",
    data: $("#myDelForm").serialize(),
    success: function(rText) {
      $("#ajaxMain2").text(rText);
    }
  });
}
0 голосов
/ 04 января 2012

Как выглядит код, который вы используете для удаления? Находится ли он в том же php-файле, что и форма, которую вы разместили выше? Если да, то была ли форма отправлена ​​сама себе? Как, например, когда пользователь нажимает ввод во время ввода типа = текстовый элемент управления? Я понимаю, что вы хотите сделать это с помощью ajax, но я подозреваю, что форма - это ваша проблема.

Передача комментария jQuery.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...