JavaScript警报框与PHP结合使用

时间:2008-10-13 14:13:53

标签: php javascript

echo "<td><a href='delete.php?id=$row[id]&&category=$a' onclick='return confirm(\'are you sure you wish to delete this record\');'>delete</a></td>";

以上是我尝试使用的代码。每次它什么都不做,我无法看到我如何使用'正确'的JavaScript方法。是什么原因?

8 个答案:

答案 0 :(得分:3)

使用GET方法更改状态也是一个坏主意 - 看看有关何时使用GET以及何时使用POST(http://www.w3.org/2001/tag/doc/whenToUseGet.html#checklist

的指南

答案 1 :(得分:3)

我认为$ row [id]在echo语句中没有正确评估。试试这个:

echo "<td><a href='delete.php?id={$row[id]}&&category=$a'...

注意弯曲的括号。

但这更容易阅读:

?><td><a href="delete.php?id=<?=$row[id];?>&amp;category=<?=$a;?>" onclick="return confirm('are you sure you wish to delete this record');">delete</a></td><?

另外,为你的js添加一个函数来处理确认:

function confirm_delete() {
    return confirm('Are you sure you want to delete this record?');
}

然后你的onclick方法就可以是return confirm_delete()

答案 2 :(得分:2)

只是一个建议,你使用的是框架吗?

我使用MooTools然后只需在HTML

中包含此脚本

confirm_delete.js

window.addEvent('domready', function(){
    $$('a.confirm_delete').each(function(item, index){
        item.addEvent('click', function(){
            var confirm_result = confirm('Sure you want to delete');
            if(confirm_result){
                this.setProperty('href', this.getProperty('href') + '&confirm');
                return true;
            }else{
                return false;
            }
        });     
    });
});

它所做的就是找到任何带有class =“confirm_delete”的“a”标签,并附上与你的脚本相同的代码,但我发现它更容易使用。它还会在地址中添加一个确认变量,这样如果关闭JavaScript,您仍然可以将它们发送到带有确认提示的屏幕。

答案 3 :(得分:2)

您应该尝试尽可能地将JavaScript与HTML分开。最初输出vanilla HTML,然后将事件添加到链接中。

printf('<td><a id="deleteLink" href="delete.php?id=%d&amp;category=%s">Delete</a></td>', $row["id"], $a);

然后页面上的某些JavaScript代码:

document.getElementById('deleteLink').onclick = function() {
    return confirm("Are you sure you wish to delete?");
};

从您的示例来看,看起来您可能有一个包含多行的表,每行都有自己的删除链接。这使得使用这种风格更具吸引力,因为你不会一遍又一遍地输出confirm(...)文本。

如果是这种情况,您显然无法在链接上使用id,因此使用类可能更好。 <a class="deleteLink" ...

如果你使用的是JavaScript库,比如jQuery,这很容易:

$('.deleteLink').click(function() {
    return confirm("...");
});

答案 4 :(得分:1)

echo "<td><a href='delete.php?id=$row[id]&&category=$a' onclick='return confirm(&quot;are you sure you wish to delete this record&quot;);'>delete</a></td>";

使用Firefox的HTML语法突出显示您的优势。 : - )

答案 5 :(得分:0)

另一种解决方案:

echo '<td><a href="delete.php?id=' . $row[id] . '&category=' . $a . '" onclick="return confirm(\'are you sure you wish to delete this record?\');'>delete</a></td>';

我将双引号更改为单引号,反之亦然。然后,我将这些变量连同在一起,因此PHP无需进行评估。

此外,我不确定onclick上的返回是否会在用户单击“否”时实际阻止链接被“点击”。

答案 6 :(得分:-1)

如果你坚持使用echo-thing:

echo "<td><a href='delete.php?id=$row[id]&&category=$a' onclick='return confirm(\\'are you sure you wish to delete this record\\');'>delete</a></td>";

- 因为转义是从php解释器处理的! - )

答案 7 :(得分:-1)

这是我用于相同类型的东西。

我不回显/打印它,我会将html放在?&gt;之间HTML

?> <td><a href="?mode=upd&id=<?= $row[id] ?>&table=<?= $table ?>">Upd</a> / <a href="?mode=del&id=<?= $row[id] ?>&table=<?= $table ?>" onclick="return confirm('Are you sure you want to delete?')">Del</a></td> <?php