Вызвать функцию php с событием onclick?

Я хочу удалить проект из базы данных.Перед удалением я хочу подтвердить его, хочет ли пользователь удалить или нет.Если пользователь нажимает ОК, он должен вызвать функцию удаления.Но в коде, когда пользователь щелкает, функция вызывается не только пользователем нажмите ОК, но также нажмите Concel. Для другого оператора alter он работает нормально. Для вызова функции php возникает только проблема.

Как я могу это решить?

код,

<a href = "http://localhost/Performance/project/ShowAllProjects.php?project_id='.$row['project_id'].'"><img src = "http://localhost/performance/css/delete.png" title = "delete"  alt = "running test" style = "width:15px;height:15px;border:0;margin-left:1cm" Onclick = "deleteProject();"/></a>

<script>
    function deleteProject() {      
        var r = confirm("Press a button!");
        if (r == true) {
            //alert("You pressed OK!");
            alert("<?php confirmDelete(); ?>"); 
        } else {
            alert("You pressed Cancel!");              
        }
    }
</script>

<?php
    function confirmDelete(){
        $sql = "DELETE FROM project_table WHERE project_id='".$_GET['project_id']."' AND member_id='".$_SESSION['user_id']."';";
        if (mysqli_query($GLOBALS['db'], $sql)) {
            echo "Your test deleted successfully";  
        } else {
            echo "ERROR: Could not able to execute $sql. " . mysqli_error($GLOBALS['db']);
        }
    }
?>

alert () используется для отображения сообщения, а не для вызова функции.

Devsi Odedra 05.06.2018 09:22

вы можете попробовать с console.info() вместо alert()

Nawin 05.06.2018 09:24

вы должны использовать сообщение формы или restful API (ajax) для достижения своей цели.

Terry Wei 05.06.2018 09:24

попробуйте <a href = "localhost / Performance / project /… echo $row['project_id'ght;?> "> <img src = " локальный / производительность / css / delete.png "title = " delete "alt = " бегущий тест "style = " width: 15px; height: 15px; border : 0; margin-left: 1cm "onclick = " return confirm ('Вы уверены, что хотите удалить этот элемент?'); "/> </a>

Bhumi Shah 05.06.2018 09:24

Также дезинфицируйте вводимые пользователем данные, чтобы предотвратить SQL-инъекцию.

Thum Choon Tat 05.06.2018 09:25

Пожалуйста, используйте подготовленные операторы в вашем SQL, иначе маленькие котята умрут ()

madflow 05.06.2018 09:35

это ссылка, необходимая для предотвращения события по умолчанию тега привязки, которое обновляет страницу. Пожалуйста, измените deleteProject (event) {event.preventDefault ();}. Я уверен, что это сработает для тебя

Dani 05.06.2018 09:37
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
7
1 496
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Вам следует попытаться убрать свой PHP из поля зрения, если это возможно. Если вы переместите свои функции PHP в отдельный файл PHP и вызовете их с помощью AJAX, это позволит вам повторно использовать код на других страницах, если это необходимо.

Это не протестировано полностью, но я бы сказал, что это более чистое решение.

Добавьте идентификатор к удаленному изображению:

<img id = "delete" src = "" title = "delete"  alt = "running test" style = "width:15px;height:15px;border:0;margin-left:1cm" onclick = "deleteProject()"/>

Измените свой javascript, чтобы использовать AJAX для вызова PHP-скрипта:

$( document ).on( 'click', '#delete', function(){
    var r= confirm("Press a button!");
    if (r==true)
      {
        $.ajax({
        url: '<?php echo LOCATION_OF_PHP_SCRIPT; ?>',
        type: 'post',
        data: DATA_IF_NEEDED
        }).success( resp )
        {
            if ( resp == TRUE )
          {
            alert( "Deleted" );
          }

        }
      }
    else
      {
        alert("You pressed Cancel!");              

      }
})

Вам нужно будет настроить некоторые параметры в соответствии с вашим приложением, но это должно помочь вам.

Вы не можете запустить код php из JavaScript. JavaScript является клиентским, а php - серверным.

Вы должны создать сценарий deleteThings.php, который удалит то, что вы хотите, и вызовет его из клиентского JavaScript, используя асинхронный запрос Ajax.

Для асинхронного запроса Ajax вы можете использовать jQuery, vanilla JavaScript или другие библиотеки.

Используйте ajax для вызова функции PHP из функции JAVASCRIPT.

Проверьте приведенный ниже код.

$ .ajax ({

type: "POST",

url: 'your_functions.php',

dataType: 'json',

data: {functionname: 'delete'},

success: function (obj, textstatus) {
       }

})

your_functions.php

Ответ принят как подходящий

Просто следуйте этому коду, чтобы использовать вызов jQuery ajax. Это HTML-код с включенным jQuery, и я использовал файл test.php в том же каталоге. Просто напишите свою функцию PHP в файле test.php. Наконец, ответ будет отображаться в данном div после того, как пользователь нажал кнопку подтверждения.

<!DOCTYPE html>
<html>
<head>
    <title>Jquery ajax</title>
    <script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
    <button onclick = "myFun()">Click me</button>
    <div id = "div1"></div>
    <script>
        function myFun(){
            var r= confirm("Press a button!");
        if (r==true)
          {
            $.ajax({url: "test.php", success: function(result){
            $("#div1").html(result);
            }});  
          }
        else
          {
            alert("You pressed Cancel!");              

          }
        }
    </script>   
</body>
</html>

при нажатии на div функция read выполнится и передаст привет

<?php
function read($id){
   echo $id;
  }
?>


<div onclick = "<?php read("hi"); ?>" class = "item">

</div>

Другие вопросы по теме