2010-03-15 2 views
0

я попробовал:с помощью HREF (HTML) плетутся с PHP

<?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 является Java-функция в delete.php написано как:

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

** после ** кл Icking Удаление okcancel сообщение ящика появится вопрос конформации

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

он дает ошибку, как:

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

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

PLS помощь,

благодаря

+0

Это больше яваскрипта вопрос, чем PHP один. Что выглядит 'MsgOkCancel()'? –

+0

добавлено в отредактированном – dexter

ответ

-1

Что об этом один: PHP:

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

JS:

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

'javascript: void (0)' is evil и ваш PHP имеет синтаксические ошибки в нем. – Quentin

+0

@ Давид: Я знаю, что это считается «злом», но знаете ли вы, почему именно? Я никогда не понимал, почему (или я забыл). –

+0

Это не прогрессивный. Это не ненавязчиво. Он не дает подсказки относительно того, что ссылка делает в строке состояния. – Quentin

3

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

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

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

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

Однако, вы должны иметь something that works в 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

+1 Специально для прогрессивного наконечника и совета POST. –

0

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

Прежде всего, если вы собираетесь вызывать функции 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 
Смежные вопросы