Окна предупреждений JavaScript в сочетании с PHP - PullRequest
2 голосов
/ 13 октября 2008
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 ]

3 голосов
/ 13 октября 2008

Я думаю, что $ 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().

3 голосов
/ 13 октября 2008

Также плохая идея использовать методы GET для изменения состояния - взгляните на рекомендации о том, когда использовать GET и когда использовать POST (http://www.w3.org/2001/tag/doc/whenToUseGet.html#checklist)

2 голосов
/ 14 октября 2008

Вы должны стараться максимально отделить ваш 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("...");
});
2 голосов
/ 14 октября 2008

Просто предложение, вы используете фреймворк?

Я использую MooTools, затем просто включаю этот скрипт в HTML

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

Все, что он делает - это находит любые теги "a" с class = "verify_delete" и присоединяет тот же код, что и ваш скрипт, но я считаю, что его проще использовать. Он также добавляет переменную подтверждения к адресу, так что если JavaScript отключен, вы все равно можете отправить их на экран с запросом подтверждения.

1 голос
/ 13 октября 2008
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>";

Используйте подсветку синтаксиса HTML Firefox в своих интересах. : -)

0 голосов
/ 14 октября 2008

Вот что я использую для вещей того же типа.

Я не отражаю / распечатываю, я помещу 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
0 голосов
/ 13 октября 2008

Другое решение:

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 не требует оценки.

Кроме того, я не уверен, остановит ли возврат по клику ссылку "щелкнуть" по ссылке, когда пользователь нажимает нет.

0 голосов
/ 13 октября 2008

А если вы настаиваете на использовании эхо-вещи:

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-интерпретатора! -)

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