如何从已通过ajax填充的div返回id值

时间:2012-01-04 15:59:56

标签: ajax variables loops html

我在将正确的id函数传递回AJAX时遇到了一些困难。 我正在创建一个产品公告生成器,允许通过其SKU代码添加项目(工作正常)。我的问题是,当点击公告时,该公告的预览会加载到div中,并显示与该公告关联的所有产品。
 从这些结果中,我试图添加从公告中删除产品的功能。问题是传递回AJAX的值仅属于第一个产品。如果它是除第一个项目之外的任何其他项目,它将不会发送属于特定项目的值。

这是通过AJAX加载到div中的代码(属于main.php),并与每个与选定公告关联的产品循环

    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上,在main.php中调用的div也位于此处)是

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,它可以工作...但是在main.php被调用到div之后,它不会从index.php。

我无法弄清楚如何从div中的main.php传递正确的循环值,返回到index.php上的AJAX代码

任何人都可以帮我吗?

谢谢,

达斯汀

3 个答案:

答案 0 :(得分:0)

您用来删除的代码是什么样的?它与您上面发布的表单在同一个php文件中吗?如果是这样,表格是否意外地提交给自己?就像用户在输入类型=文本控件上按Enter键一样?我知道你想通过ajax这样做,但我怀疑表格是你的问题。

借调jQuery评论。

答案 1 :(得分:0)

不要将id存储在输入中,只需将其作为参数传递给函数:

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" /><? ... ?>

答案 2 :(得分:0)

这里试试这个

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);
    }
  });
}