использование тега href (html) вместе с PHP - PullRequest
0 голосов
/ 15 марта 2010

я пробовал:

<?php include("delete.php") ?>
<?php 

   ....
   ....
   ....

if($result=mysql_query($sql))
                {

                    echo "<table><th>Id</th><th>Name</th><th>Description</th><th>Unit Price</th>";
                    while($row = mysql_fetch_array($result))
                    {
                        echo "<tr><td>".$row['Id']."</td><td>".$row['Name']."</td><td>".$row['Description']."</td><td>".$row['UnitPrice']."</td> 
                        <td><a href='delproduct($row[Id])' onclick = 'return MsgOkCancel()'>Delete</a></td></tr>";
                        echo "<br/>";
                    }
                }
?>

следующий javascript находится на той же странице:

<script type="text/javascript" language="javascript">
            function MsgOkCancel() {
                                    if (confirm("Are You Sure You Want to Delete?"))
                                     { return true }
                                    else
                                    {return false}
                                   }
        </script> 

где delproduct - это функция javascript в delete.php написано как:

<script type="javascript">
function delproduct(Id)
{
    alert('Id '+ Id);
}
<script>

** после ** нажатия кнопки Удалить появляется окно сообщения okcancel с запросом подтверждения

** но ** после нажатия «ОК» он должен выполнять операторы внутри функции delproduct , но не

выдает ошибку вроде:

Объект не найден: запрошенный URL не найден на этом сервере.

в чем проблема?

Пожалуйста, помогите,

спасибо

Ответы [ 3 ]

3 голосов
/ 15 марта 2010

URI без схемы (например, http:) рассматривается как относительный URI.

Вы, похоже, ищете javascript: (который никогда не должен использоваться ни для чего, кроме создания букмарклетов).

То, что вы должны делать, это что-то вроде:

onclick="if (MsgOkCancel()) { delproduct($row[Id]); return false; } else {  return false; }"

Тем не менее, вы должны иметь что-то, что работает в href, но, поскольку это, кажется, вносит существенные изменения на сервере, вы должны использовать POST, а не GET, поэтому ссылка - это неправильный инструмент .

То, что вы, вероятно, должны иметь:

<form action="/delete" method="post" onsubmit="return delete(this);">
    <input type="hidden" name="id" value="<?php echo htmlspecialchars($row[Id]); ?>">
    <input type="submit" value="Delete">
</form>

В сочетании с:

function delete(form) {
    if (confirm("Are You Sure You Want to Delete?")) {
        delproduct(form.elements.id.value);
    }
    return false;
}

Еще лучше, избавьтесь от атрибута onsubmit и назначьте событие с помощью JavaScript.

0 голосов
/ 15 марта 2010

Я думаю, вам нужна другая настройка.

Прежде всего, если вы собираетесь вызывать функции javascript в атрибуте href, вам необходимо добавить к нему javascript:, например href="javascript:delproduct(...)" Но вызывать javascript из атрибута href не рекомендуется. Этот атрибут предназначен для URL.

Я бы посоветовал вам создать функцию, которая отображает окно сообщения и в зависимости от действий пользователя вызывает функцию delproduct. Что-то вроде:

function confirmDelProduct( id )
{
    if( msgOkCancel() )
    {
        delproduct( id );
    }
    // return false is meant to stop the href url from being called
    return false;
}

А в вашем html:

<a href="#" onclick="return confirmDelProduct(' . $row[ 'id' ] . ')"> ... etc
0 голосов
/ 15 марта 2010

А как насчет этого: PHP:

<a href="javascript:void(0);" onclick=\"delproduct({$row[Id]})\">

JS:

function delproduct(Id){
    if(MsgOkCancel()) alert('Id '+ Id);
}
...