2010-10-26 4 views
0

J'essaie d'obtenir des données à partir d'un serveur en utilisant jQuery $.getJSON, et le code semble bien fonctionner, jusqu'à ce qu'il arrive à $.getJSON, il ne semble pas déclencher du tout, il y a aucun journal de la console lorsque j'appuie sur le bouton, voici le code ci-dessous,jQuery getJSON ne fonctionne pas

$(document).ready(function(){ 
var funk; 
    $('#button').live('click', function(){ 
     var funk = ""; 
     var query = ""; 
     $('#wrapper > [data-custom="field"]').each(function(i, data){ 

      if(i == 0){ 
       funk = query + $(this).attr('id')+" = '"+$(this).val()+"'"; 
      }else{ 
       funk = funk + " AND " + $(this).attr('id')+" = '"+$(this).val()+"'"; 
      }; 

     }); 

     $.getJSON('test.php', {query: funk}, function(json){ 
      console.log(json) 
     }); 

    }); 
}); 

le fichier PHP test.php dans le même dossier,

$weo = $_GET['query']; 

echo $weo; 

Toutes les idées sur ce qui pourrait être la cause du problème?

Merci d'avance!

+0

Etes-vous sûr que l'appel parvient au serveur?Je commencerais par dépouiller le code et passer une valeur "funk" codée en dur pour dépister le problème. De plus, si le serveur génère une erreur (par exemple, le statut HTTP 400), la fonction de réussite ne sera pas appelée et votre journal ne verra-t-il pas la console (bien que vous verriez probablement une erreur?) –

Répondre

0

Si vous débogage à l'aide:

-> Firefox: Firebug ouvert et regardez l'onglet Net pour faire Assurez-vous que la requête est en cours et pour voir quelle est la réponse du serveur.

-> IE: allumez Fiddler2 pour voir la demande/réponse.

-> Chrome: utilisez l'onglet Ressources.

Une fois que vous voyez ce que le serveur renvoie (le cas échéant), vous pouvez déterminer comment procéder.

+0

J'utilisais firebug, rien ne tirait, après un redémarrage ça a juste fonctionné, encore une fois windows échoue, mais merci pour toute l'aide! Appréciez-le! – Odyss3us

1

Je m'attends à ce que getJSON tombe du fait que le serveur ne renvoie pas une belle syntaxe JSON.

Essayez de faire

echo json_encode($weo); 

dans votre fichier PHP. Si vous ne voulez pas en fin de compte à utiliser JSON, mais le texte brut au lieu, utilisez $.get:

$.get('test.php', {query: funk}, function(data){ 
    console.log(data) 
}); 
+0

Je ne reçois aucun message d'erreur non plus, c'est vraiment bizarre! – Odyss3us

+0

Fais ce que Soslo a dit ;-) – lonesomeday

0

Assurez-vous que votre Test.php ne fonctionne pas comme prévu. Pour déboguer ce qui est retourné à partir du serveur essayer ce code

function AjaxDebug() { 
$.ajax({ 
    type: "GET", 
    url: "test.php", 
    dataType: "jsonp", 
    data: ({query: funk}), 
    success: function(results) { 
     alert("Success!"); 
    }, 
    error: function(XMLHttpRequest, textStatus, errorThrown) { 
    alert(errorThrown); 
    } 
}); } 

Ensuite, essayez d'avoir le point de rupture dans l'erreur et d'examiner les XMLHttpRequest.getresponseText, getresponseXML etc pour avoir une meilleure compréhension de ce que le problème est.

0

J'ai eu le même problème avec getJSON ne fonctionnait pas. J'ai remarqué que les données sont chargées mais ne sont pas disponibles.

La solution consiste à utiliser JSONP et dans la chaîne de requête url ajouter une variable de fonction de rappel.

$.getJSON("http://www.example.com/test.php?callback=?",function(json){ 
     console.log(json); 
    }); 

Notez que nous mettons un? comme nom de fonction de rappel au lieu d'un nom de fonction réel. C'est parce que jQuery remplace le? avec un nom de fonction généré (comme jsonp1232617941775) qui appelle la fonction inline.

Dans votre PHP, vous aurez besoin de sortir avec la fonction de rappel.

echo $_GET['callback'] . '(' . $jsonData . ');'; 
// prints: jsonp1232617941775({"name" : "Gaurav", "age" : "91"}); 

Affichera objet JSONP valide et que vous serez en mesure de charger et utiliser dans votre code jQuery.