Вызов JavaScript внутри блока Php и наоборот - PullRequest
1 голос
/ 03 февраля 2010
echo "<a href=#> Delete </a>";

Всякий раз, когда пользователь нажимает кнопку Удалить, для подтверждения должна быть вызвана функция JavaScript. Где-то в функции Javascript, php-код должен использоваться для операции удаления. Как я могу это сделать? Используйте что-то вроде «некоторый php-код идет сюда» и «некоторая функция javascript ();» для меня, чтобы знать, где поставить что. Благодаря.

Ответы [ 7 ]

2 голосов
/ 03 февраля 2010

Предполагается, что вы используете jQuery ...

<a href='javascript:delete();'>Delete</a>

<script type="text/javascript">

function delete()
{
     $.post("/your_script.php", {}, function(result) {
     });
}

</script>
1 голос
/ 03 февраля 2010

Функции JavaScript выполняются на клиенте (в браузере), а PHP - на сервере. Таким образом, JavaScript должен отправить сообщение - через HTTP - на сервер, который будет обработан PHP. PHP будет выполнять удаление. Есть смысл?

Сообщение , отправленное на сервер, может быть отправлено через AJAX.

0 голосов
/ 03 февраля 2010

вот еще один пример использования jQuery:

<div id="message"></div>
<a class="action" type="delete" rel="1234567">delete</a>
<script type="text/javascript">
$('a.action').click(function(){
var $this = $(this);

var processResponse = function(data){
    //optionaly we can display server response
    $('#message').html(data);
    return; 
};

var postPparams = {
    module:'my_module_name',
    action:$this.attr('type'), 
    record_id: $this.attr('rel')
};
$.post('/server.php',postPparams, processResponse);
});
</script>
0 голосов
/ 03 февраля 2010

Поскольку это касается Ajax, давайте предположим, что вы можете использовать jQuery для обработки XHR и т. Д.

<script>
$('#del').click(function(ev){
    ev.preventDefault();
    var del_conf=confirm('Are you sure you want to delete this item?');
    if(del_conf){ $.post('delete.php',{'del':1,'id':123123},function(data){
      alert(data.result);},'json');
      }
    });
 </script>
 <a id='del'>Delete</a>

Хорошо, это немного JS и HTML. Теперь вам нужен отдельный PHP-скрипт для обработки поста. Для примера это будет сохранено в том же каталоге с именем 'delete.php'.

<?php
$del=(int)$_POST['del'];
$id=(int)$_POST['id']

if($del<1 || $id<1){ exit; }
else{
  //do your DB stuff
  }
if($db_success){
  echo json_encode(array('result'=>'success'));
  }
else{
  echo json_encode(array('result'=>'error'));
  }
0 голосов
/ 03 февраля 2010

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

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

В любом случае, вы можете выполнить JS-скрипт с помощью метода «onclick», который выполняется, когда пользователь нажимает на элемент: <a href="#" onclick="myFunc();">Delete</a> Но следующий подход выглядит лучше и считается идеальным:

<a href="#" id="myId">Delete</a>
<script type="text/javascript">
document.getElementById("myId").onclick = myFunc;
</script>
0 голосов
/ 03 февраля 2010

PHP - это технология на стороне сервера, а JS - на стороне клиента. Они не могут взаимодействовать друг с другом - другими словами: они полностью независимы.

PHP может выводить только код, который является кодом JS:

echo 'document.getElementById("test").appendChild(document.createTextNode("' . $myVar . '");';

Это все, что может сделать PHP. JavaScript не может напрямую взаимодействовать с PHP. Вам придется использовать AJAX для отправки нового HTTP-запроса и обработки возвращенных данных.

0 голосов
/ 03 февраля 2010

Может быть, вам стоит использовать Ajax: http://en.wikipedia.org/wiki/Ajax_%28programming%29

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