2008-12-18 6 views
0

Les liens de retour jQuery ne fonctionnent pas. J'ai utilisé jQuery et la fonctionnalité Ajax de base. Mon jQuery renvoie les liens du fichier Links_ajax.php.jQuery Les liens de retour ne fonctionnent pas lorsque Ajax

Je donne les échantillons de code.

GetCustomerData.php a:

<html> 
    <script type="text/javascript"> 
    <script src="ajax.js" type="text/javascript"> 

     $(function() { 
      ..... 

      $.ajax({ 
       type: 'POST', 
       url: 'Links_ajax.php', 
       data: 'category='+category , 
       success: function(data){ 
        $("#response").html(data); 
       } 
      }); 
     } 
     ...... 
    } 

    ... 

    <! Links return here 
     <div id="response"> 
     </div> 
</html> 

<? 
    echo "Some Code"; 


?> 

    .... 

Mon Links_ajax.php a le code suivant

.... 

echo '<a href="getCustomerData.php?id=10" onclick="requestCustomerInfo();return false;">show me </a>'; 
echo '<a href="getCustomerData.php?id=11" onclick="requestCustomerInfo();return false;">show me </a>'; 

.... 

Maintenant, je viens à la page principale getCustomerData.php. J'ai utilisé la fonctionnalité Ajax qui renvoie le lien de Links_ajax.php.

..... 

Donc, mon ajax.js a les scripts Ajax suivants.

var url = "GetCustomerData.php?id="; // The server-side script 
function handleHttpResponse() { 
    if (http.readyState == 4) { 
     if (http.status == 200) { 
      var results = http.responseText; 
      document.getElementById('divCustomerInfo').innerHTML = results; 
     } 
    } 
} 

function requestCustomerInfo(event) { 
    if(event &&event.preventDefault) event.preventDefault(); 
    else if (window.event && window.event.returnValue) 
     window.eventReturnValue = false; 
     var sId = 10; 
     http.open("GET", url + escape(sId), true); 
     http.onreadystatechange = handleHttpResponse; 
     http.send(null); 
    } 

    function getHTTPObject() { 
     var xmlhttp; 

     if (window.XMLHttpRequest){ 
      xmlhttp = new XMLHttpRequest(); 
     } 
     else if (window.ActiveXObject){ 
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
      if (!xmlhttp){ 
       xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); 
      } 
     } 
     return xmlhttp; 
    } 

    var http = getHTTPObject(); // We create the HTTP object 

......

Maintenant, je viens au problème. Quand j'exécute GetCustomerdata.php, je peux obtenir tous les liens d'ajax.JQuery. Et en cliquant sur cela, j'ai besoin d'une fonctionnalité Ajax de base depuis le chargement de la même <div></div>. Mais je suis incapable de le voir même si je l'ai fait. Y a-t-il quelque chose qui ne va pas dans mon code? Ou dois-je utiliser une autre fonctionnalité?

Répondre

-1

D'abord, je me demande pourquoi vous écrivez une requête HTTP personnalisée alors que vous avez déjà un objet jquery, en effet vous utilisez déjà $ .ajax en haut, mais ensuite créez getHTTPObject() plus tard.

Le problème est la fonction javascript requestCustomerInfo() ne déléguer à gérer le lien aux données de réponse ajax, vous devez déléguer la fonction comme un rappel de la demande ajax

$.ajax({ 
     type:'POST', 
     url: 'Links_ajax.php', 
     dataType: 'html', 
     data:'category='+category, 
     success: function(data){ 
      $("#response").html(data); 
      // here add the link click handler 
      $("#response a").click(function(){ 
       // make http get request & custom handler 
       $.get('GetCustomerData.php?id=10',function(result){ 
        $('#divCustomerInfo').html(result); 
       }); return false; 
      }); 
     } 
}); 
-1

Pour commencer, n'insérez pas de balises de script. Les balises de script avec une source devraient être fermées immédiatement et devraient être sous et ou pas dans une autre.

0

d'abord les opérations suivantes:

success: function(data){ 
    //$("#response").html(data); 
    alert(data); 
    } 

Ainsi, vous saurez s'il est vraiment renvoyer les données ou non.

Si cela fonctionne, vous pouvez remplacer

`$("#response").html(data)` 

avec

document.getElementById('response').innerHTML = data; 

Cela devrait fonctionner.

0

Je recommande fortement d'utiliser FireFox + FireBug pour tester ceci, ou un autre navigateur via un proxy HTTP qui enregistrera votre trafic. FireBug vous montrera toutes les demandes Ajax et les réponses de votre page, et devrait vous aider à déterminer si les données reviennent, et quoi.

Questions connexes