JavaScript 警报框与 PHP 相结合


JavaScript alert boxes combined with PHP

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方法。原因是什么?

使用

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

我认为$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()

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

我使用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 关闭时,您仍然可以将它们发送到带有确认提示的屏幕。

你应该尽量把你的JavaScript和你的HTML分开。最初输出原版 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("...");
});
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语法突出显示来发挥您的优势。

另一种解决方案:

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的返回是否真的会阻止链接被"单击"。

如果你坚持使用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 解释器处理的!-(

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

我不回显/打印它,我会把html放在?>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