2012-07-09 4 views
3

J'ai un ajax qui charge la sortie du script php dans un div. Je voudrais que l'utilisateur puisse ensuite cliquer sur les liens dans la sortie et réécrire le div sans recharger la page entière. Est-ce possible en principe? Imaginez le code ressemblerait à ceci:php ajax within ajax

html

<div id="displayhere"></div> 

sortie PHP1

echo '<a href="javascript:void(0);" onclick="reLoad(par1,par2,par3);">ChangeToNew</a>'; 

JS

function reLoad(par1,par2,par3) { 
... 
document.getElementById("displayhere").innerHTML=xmlhttp.responseText; 
xmlhttp.open("GET","php2.php?par1="+par1 etc.,true); 
xmlhttp.send(); 

PSP2

$par1 = $_get['par1']; 
change database 
echo '<a href="javascript:void(0);" onclick="reLoad(par1,par2,par3);">'.$par1.'</a>'; 

Cela pourrait-il fonctionner en principe ou l'approche est-elle défectueuse?

Merci.

Répondre

6

Ce que vous décrivez est standard, tous les jours AJAX. Le PHP n'est pas pertinent pour l'équation; le JS recevra simplement tout ce que le serveur lui envoie. Il arrive juste que, dans votre cas, la réponse du serveur soit traitée par PHP. Le JS et PHP n'ont pas - ne peuvent pas - avoir une relation directe, cependant.

Donc le principe est bon. Ce que vous en ferez, cependant, aura bien sûr un impact sur son fonctionnement.

choses à considérer:

  • quel sera le PHP faire? Cela peut affecter les temps de chargement
  • qu'en est-il des réponses de mise en cache, si cela est applicable, de sorte que le PHP n'a pas à calculer quelque chose qu'il a déjà généré?
  • l'interface utilisateur - l'utilisateur sera-t-il informé que le contenu est récupéré?

Etc.

+0

Cela peut certainement fonctionner - et j'ai une méthode différente que j'utilise dans un système avec un peu de trafic et cela fonctionne comme un charme. –

+0

par diferent méthode, voulez-vous dire quelque chose de totalement différent ou une variation de ce .. – user1260310

0

Je suis habitué à utiliser jQuery donc donnera des exemples de l'utiliser.

Si vous créez vos liens comme

<a href="file_to_run.php?par1=1&par2=2&par3=3" id="do_this">Click Me</a> 

Vous pouvez alors écrire votre code comme

<script> 
    $("#do_this").live('click', function(){ 
    var link_url = $(this).attr('href'); 
    $.ajax({ 
     url: link_url, 
     success: function(data) { 
     $('#displayhere').html(data); 
     } 
    return false; 
}; 
</script> 

Si vous utilisez jQuery, assurez-vous d'utiliser le .live (clic, la fonction () {}) par rapport à la méthode .click (function() {}), sinon elle ne reconnaîtra pas les éléments créés dynamiquement. Assurez-vous également de faire un retour faux.