PHP событие onclick и Form action=“delete.php”

253
19 декабря 2017, 19:17

При попытке повесить событие на кнопку onclick = 'showHint(this.name)' то сценарий delete.php который прописан на форме не срабатывает, в чем проблема?

<script>
function showHint(str) 
{
        var answer = prompt('Change', str.substr(1));
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange = function() 
        {
            document.location.href = "http://localhost/LABS/13/index.php";
        };
        xmlhttp.open("GET", "http://localhost/LABS/13/config1.php?q=" + str.substr(1) + "|" + answer, true);
        xmlhttp.send();
}
</script>
<form method = "POST" action = "delete.php"> 
<?
$doc = new DOMDocument();
$doc->load('mv.xml');
//echo $doc->saveXML();
$catalogue = $doc->getElementsByTagName("catalogue");
echo "<ul>"; 
foreach ($catalogue as $catalogue) {
    echo "<li id = '".$catalogue->getAttribute("catalog")."'>".$catalogue->getAttribute("catalog")."<input type = 'submit' name = 'D".$catalogue->getAttribute("catalog")."' value = 'Удалить'>"."<input type = 'button' onclick = 'showHint(this.name)' name = 'C".$catalogue->getAttribute("catalog")."' value = 'Изменить'>"."<input type = 'button' onclick = 'showHint(this.name)' name = 'A".$catalogue->getAttribute("catalog")."' value = 'Добавить'>"."</li>";
    echo "<ul>";

Сам delete.php

<html>
<head>
<meta charset="UTF-8">
<title>Index</title>
</head>
<style>
</style>
<body>
<!-- <form method = "POST" action = "delete.php"> -->
<?
$doc = new DOMDocument();
$doc->load('mv.xml');
$xpath = new DOMXPath($doc);
$added = false;
$deleted = false;
//echo $doc->saveXML();
 foreach($doc->getElementsByTagName("*") as $node) 
 {
    $attributes = $node->attributes; 
    if(!is_null($attributes->item(0)->name) && !$added && !$deleted) 
    { 
        if ($attributes->item(0)->value == str_replace("_"," ", substr(key($_POST), 1)) )
        {
            if (substr(key($_POST), 0, 1) == "A") 
            {
                $added = true;
                switch ($node->tagName) 
                {
                    case 'catalogue': $nodeToAdd = $doc->createElement('view'); break;
                    case 'view': $nodeToAdd = $doc->createElement('subspecies'); break;
                    case 'subspecies': $nodeToAdd = $doc->createElement('marka'); break;
                    case 'marka': $nodeToAdd = $doc->createElement('model'); break;
                    case 'model': $nodeToAdd = $doc->createElement('model'); break;
                    default: $nodeToAdd = $doc->createElement('model');
                        break;
                }
                if ($node->tagName == 'model') $newNode = $node->parentNode->appendChild($nodeToAdd);
                else $newNode = $node->appendChild($nodeToAdd);
                switch ($node->tagName) {
                    case 'catalogue': $newNode->setAttribute("vid", "Вид"); break;
                    case 'view': $newNode->setAttribute("podvid", "Подвид"); break;
                    case 'subspecies': $newNode->setAttribute("company", "Марка"); break;
                    case 'marka': $newNode->setAttribute("mod", "Модель"); break;
                    case 'model': $newNode->setAttribute("mod", "Модель"); break;
                    default: $newNode->setAttribute("mod", "Модель");
                        break;
                }
                header("Location: http://localhost/LABS/13/index.php");
            }
        }
    } 
}
$doc->save("mv.xml");
?>
<!-- </form> -->
</body>
</html>

В файле mv.xml лежит

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE mvideo SYSTEM "mv.dtd">
<mvideo>
    <!-- <catalogue catalog="TV and video"></catalogue> -->
    <catalogue catalog="TV and video">
        <view vid="plasma TVs">
            <subspecies podvid="Plasma TVs 42">
                <marka company="LG">
                    <model mod="PT351"/>                
                    <model mod="WE638"/>
                </marka>
                <marka company="SAMSUNG">
                    <model mod="RT587"/>
                </marka>
                <marka company="SONY">
                    <model mod="SK532"/>
                </marka>
            </subspecies>
        </view>
        <view vid=" LCD/LED TVs">
            <subspecies podvid="TV 15,30">
                <marka company="Polar">
                    <model mod="48 LTV3101"/>
                </marka>
            </subspecies>
            <subspecies podvid="TV 36,52">
                <marka company="Akai">
                    <model mod="LEA-19V07P"/>
                </marka>
            </subspecies>
        </view>
    </catalogue>
    <catalogue catalog="Catalogue of laptops and computers">
        <view vid="Laptops and Computers">
            <subspecies podvid="Computers">
                <marka company="Lenovo">
                    <model mod="H410e"/>
                </marka>
                <marka company="HP">
                    <model mod="p6-2000ru H0B97EA"/>
                </marka>
            </subspecies>
            <subspecies podvid="Monoblocks">
                <marka company="Acer">
                    <model mod="Aspire Z1650 PW.SJ8E8.002"/>
                </marka>
                <marka company="Packard Bell">
                    <model mod="ONETWO S A3425 RU"/>
                </marka>
            </subspecies>
        </view>
    </catalogue>  

</mvideo>
Answer 1

Частая ошибка. Непонимание событий формы.

У вас есть сейчас кнопка "<input type = 'submit'/>

Которая отрабатывает событие onSumbit().

Который отправляет вашу форму методом POST к скрипту delete.php

<form method = "POST" action = "delete.php">

У вас сначала произойдет onclick который не успеет вернуть ответ. Так как тут же страница обновится из-за onsubmit

Тыц1 Тыц2 Тыц3

READ ALSO
PHP Pregreplace замена pattern

PHP Pregreplace замена pattern

ЗдравствуйтеЕсть регулярка для замены bbcode-смайла:

257
Как изменить переменную в php-файле

Как изменить переменную в php-файле

Есть php-файл примерно с таким содержимым

187
Как добавить условия проверки на &ldquo;битые ссылки&rdquo; с использованием cURL?

Как добавить условия проверки на “битые ссылки” с использованием cURL?

Добрый день! Подскажите пожалуйста, поставил плагин проверки "битых ссылок", но необходимо его расширить, добавить пару url-адресов для проверки...

170
Найти и заменить с условием

Найти и заменить с условием

WP Данные из текстового поля попадают в переменную the_contentНужна функция, которая будет пробегаться по тексту, выискивать таблицы, не заключенные...

169