0

GET 変数を別の PHP ページに渡す際に問題が発生しました。簡単な目次を用意しました。ajaxで行を削除したいです。Ajax は、フォームを使用した単純な例で完全に機能します。

マークアップは次のとおりです。

    while($row=mysql_fetch_array($query))
    {
/*here are rows(content) */

        <form action='#' method='get' onsubmit='deleteContent(); return false'>
        <td><input type='hidden' name='delete' value='$row[id_content]' id='delete' />
        <input type='submit' class='del'  name='delete' title='Delete' value='Delete' /></td>
        </tr></form>";  
    }

送信を押すと、常に1が返されます。ここにDeleteContentがあります

  function deleteContent()//za brisanje dela
{
    try
    {
        xhr = new XMLHttpRequest();
    }
    catch (e)
    {
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }

    if (xhr == null)
    {
        alert("Vaš brskalnik ne podpira AJAX-a!");
        return;
    }
    var url = "delete.php?delete=" + document.getElementById('delete').value;

    xhr.onreadystatechange = handler2; 
    xhr.open("GET", url, true);
    xhr.send(null);
}

function handler2()
{
    if (xhr.readyState == 4)
    {
        if (xhr.status == 200)

            document.getElementById("delete").innerHTML = xhr.responseText;
        else
            alert("error!");
    }
}

そして、ここにdelete.phpがあります

            <?php
            echo "<span>Content delete</span><br/>";
            if($_GET['delete'])
            {echo $_GET['delete'];}

    ?>

誰が問題がどこにあるか知っていますか?

4

2 に答える 2

1

属性の値を書き込みValueます。

<input type='hidden' 
       name='delete' 
       value="<?php echo $row['id_content'] ?>" 
       id='delete' />
于 2012-07-09T08:01:53.487 に答える
0

ID はドキュメント内で一意である必要があります。

document.getElementById('delete')常に同じ要素を指します。
使用したフォームを引数として deleteContent() に指定すると、正しい値を取得できます。

<form action='#' method='get' onsubmit='return deleteContent(this);'>

....

function deleteContent(form)//za brisanje dela
{
    try
    {
        xhr = new XMLHttpRequest();
    }
    catch (e)
    {
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }

    if (xhr == null)
    {
        alert("Vaš brskalnik ne podpira AJAX-a!");
        return;
    }
    var url = "delete.php?delete=" + form.delete.value;

    xhr.onreadystatechange = handler2; 
    xhr.open("GET", url, true);
    xhr.send(null);
    return false;
}

その他: マークアップが無効のようです。たとえば、

while($row=mysql_fetch_array($query))
    {
/*here are rows(content) */

        echo "<tr><td>
              <form action='#' method='get' onsubmit='return deleteContent(this);'>
               <input type='hidden' name='delete' value='{$row[id_content]}' id='delete' />
               <input type='submit' class='del'  name='delete' title='Delete' value='Delete' />
              </form>
             </td></tr>";  
    }
于 2012-07-09T08:22:29.860 に答える