Question

J'ai un script de mise à jour d'une table de base de données. Je dois retourner un tableau de JSON et de mettre à jour des tables avec JQUERY.

mon script php:

$update = mysql_query("UPDATE PLD_SEARCHES SET STATUS = 1, TOTAL_RESULTS = ".$scrapper->getTotalResults().",RESULTS = $resultCounter WHERE ID = ".$searchId);
$output = array("status"=>"COMPLETED","results"=>$resultCounter,"totalResults"=>$scrapper->getTotalResults());
echo json_encode($output);

Code jquery:

$("button").live("click", function(event){
                    event.preventDefault();
                    $.getJSON("startsearch.php",{ searchId: $(this).val() }, function(data){
                        alert(data[0].status);
                    });

... le problème est que si j'utilise $.post("startsearch.php",{ searchId: $(this).val() }, function(data)) le script est exécuté et je reçois une alerte agréable avec une valeur non définie. si j'ajouter le paramètre « JSON » le script ne soit pas exécuté plus. J'ai essayé d'utiliser getJSON mais encore une fois le même problème.

Tout le monde a des idées? Je suis désespéré ... cela a été me casser les pieds pendant presque une semaine et je n'ai toujours pas réussi à le résoudre.

Était-ce utile?

La solution

Dans votre fichier php assurez-vous de définir le type de contenu correct:

header("Content-type: application/json; charset=utf-8");

de telle sorte que jquery peut correctement eval la réponse dans un objet JSON.

Autres conseils

Vous pouvez accéder à vos données de réponse comme suit:

alert(data.status);
alert(data.results);
alert(data.totalResults);

S'il vous plaît ne pas utiliser d'alerte, installez Firebug dans votre Firefox ou activer la console javascript Chrome ou Safari. après que vous pouvez utiliser console.log(data);

je suppose que les données ne sont pas un tableau. également un coup d'oeil à l'each () exmaple sur les jquery docs http: //docs.jquery. com / Ajax / jQuery.getJSON

Eh bien, je suis confiant json2.js pour analyser les données JSON renvoyées de requête AJAX. Vous pouvez le télécharger à partir de http://json.org . Cette bibliothèque offre une meilleure façon d'analyser une chaîne, et lancer une exception si la piqûre est pas JSON.

J'écris toujours ma demande AJAX comme ceci:

$.post(URL,
  { PARAM },
  function(data){
    try {
      var r = JSON.parse(data);
      //this for your code above
      alert (r.status); //should be 'COMPLETED'
    }
    catch (e) {
      //data is not in json format, or there are another exception in try block
      //do something about it
      alert('Exception occured, please check the data!');
    }
});

Lors du traitement de JSON, le tableau en php deviendra membre variable JSON. Donc, si dans votre php il est $output['status'], puis en JSON, il sera r.status.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top