2010-01-18 6 views
0

J'ai un script pour mettre à jour une table de base de données. J'ai besoin de retourner un tableau JSON et de mettre à jour certaines tables avec JQUERY.php et JSON aide!

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); 
        }); 

maintenant ... 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'ajoute le paramètre "json", le script ne sera plus exécuté. J'ai essayé d'utiliser getJSON mais encore le même problème.

Quelqu'un a des idées? Je suis désespéré ... ça m'a dérangé pendant presque une semaine et je n'ai toujours pas réussi à le résoudre.

+1

Avez-vous essayé d'enregistrer des 'données' avec Firebug pour pouvoir inspecter l'objet? – JAL

+0

il devrait être 'data.status', pas' data [0] .status'. Voir mes réponses complètes ci-dessous. –

Répondre

0

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

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

afin que jquery peut correctement eval la réponse dans un objet JSON.

+0

'eval' est mal :) Utilisez' json2.js' de http://json.org pour plus de paix à l'esprit;) –

0

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

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

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 cela, vous pouvez utiliser console.log(data);

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

0

Eh bien, je fais confiance à json2.js pour analyser les données de json retournées par la demande d'AJAX. Vous pouvez le télécharger à partir de http://json.org. Cette bibliothèque fournit une meilleure façon d'analyser n'importe quelle chaîne, et lancera une exception si la piqûre n'est pas dans 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 c'est $output['status'], alors dans json, ce sera r.status.