2010-02-03 5 views
1
echo "<a href=#> Delete </a>"; 

Chaque fois qu'un utilisateur clique sur Supprimer, une fonction javascript doit être appelée pour confirmation. Quelque part dans la fonction Javascript, le code PHP devrait être utilisé pour l'opération de suppression. Comment je fais ça? Utilisez quelque chose comme "un code php va ici" et "une certaine fonction javascript();" pour moi de savoir où mettre quoi. Merci.Appeler JavaScript dans le bloc Php et vice-versa

+2

Votre question suggère que vous savez peut-être pas la différence entre (ce qui est exécuté) côté serveur et (ce qui est exécuté) côté client. Si cela est correct, je vous recommande fortement de vous familiariser avec le concept de requête/réponse du protocole http et donc avec la différence client/serveur. –

Répondre

1

Les fonctions JavaScript s'exécutent sur le client (dans le navigateur) et PHP s'exécute sur un serveur. Donc, le JavaScript doit envoyer un message - via HTTP - au serveur pour qu'il soit géré par PHP. Le PHP effectuerait la suppression. Avoir du sens?

Le message envoyé au serveur peut être envoyé via AJAX.

+0

Donc, il y a une nouvelle méthode de requête pour le protocole HTTP appelée 'AJAX'? Ne le prenez pas personnellement mais ... apprenez-en un peu plus sur AJAX. – Crozin

+0

Je voulais suggérer que l'auteur se penche sur AJAX; il semblait qu'elle ne le connaissait peut-être pas. (Et votre commentaire pourrait facilement être considéré comme offensant.) – Upperstage

2

Cela suppose que vous utilisez jQuery ...

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

<script type="text/javascript"> 

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

</script> 
+0

un appel à confirm() serait utilisé ici pour déterminer si $ .post() s'exécute ou non. vous souhaitez également annuler l'action par défaut pour l'événement click. – lincolnk

0

PHP est une technologie côté serveur, alors que JS est un côté client. Ils ne peuvent pas interagir les uns avec les autres - en d'autres termes: ils sont complètement indépendants.

PHP ne peut le code de sortie qui est un code JS:

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

Il est tout PHP peut faire. JavaScript ne peut pas interagir directement avec PHP. Vous devrez utiliser AJAX pour envoyer une nouvelle requête HTTP et traiter les données renvoyées.

0

PHP est un langage côté serveur, vous ne pouvez donc pas afficher de script PHP dans le navigateur et espérer qu'il l'analysera avec le moteur PHP. Ce que vous cherchez est probablement AJAX, ou simplement rediriger l'utilisateur vers une autre page (avec des paramètres d'URL différents) ou soumettre un formulaire. AJAX n'exige pas du navigateur pour recharger la page, alors que les deux autres méthodes le font.

Quoi qu'il en soit, vous pouvez exécuter un script JS avec la méthode « onclick », qui est exécutée lorsque l'utilisateur clique sur l'élément: <a href="#" onclick="myFunc();">Delete</a> Mais l'approche suivante semble mieux et considéré comme un idéal:

<a href="#" id="myId">Delete</a> 
<script type="text/javascript"> 
document.getElementById("myId").onclick = myFunc; 
</script> 
0

Comme cela implique Ajax, supposons que vous pouvez utiliser jQuery pour gérer le XHR et ainsi de suite.

<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> 

Ok, donc c'est du JS et du HTML. Maintenant, vous avez besoin d'un script PHP séparé pour gérer la publication. Pour aller avec l'exemple, cela serait sauvegardé dans le même répertoire, nommé '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

est ici un autre exemple en utilisant 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> 
Questions connexes