2015-11-24 16 views
5

Ho uno script PHP che restituisce il seguente JSON dal mio SQL Server:getJSON parser non può elaborare uscita JSON dal file PHP

<?php 

$server = "DEVTEST-PC\\SRVCLT"; 
$options = array("UID"=>"sa","PWD"=>"1234","Database"=>"Test"); 
$conn = sqlsrv_connect($server, $options); 


if ($conn === false) die("<pre>".print_r(sqlsrv_errors(), true)); 
//echo "Successfully connected!"; 


$result = sqlsrv_query($conn,"SELECT Currency, USDRate FROM Pax.CurrencyRate 
WHERE GBPRate BETWEEN 80 AND 800;"); 

if($result === false) { 
    die(print_r(sqlsrv_errors(), true)); 
} 

while($row = sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC)) { 

    $myArray['paxcurjson'][] = $row; 
} 
    echo json_encode($myArray); 
?> 

uscita è la seguente:

{"paxcurjson":[ 
{"Currency":"AFN","USDRate":49.5}, 
{"Currency":"ALL","USDRate":103.567}, 
{"Currency":"BDT","USDRate":77.562}, 
{"Currency":"DZD","USDRate":79.6146}]} 

Sto utilizzando jQuery per analizzarlo, ma per qualche motivo non è in grado di analizzare. Il mio codice è il seguente:

<script type = "text/javascript" language = "javascript" > 

    var url = 'CurrencyQuery.php'; 

     $.getJSON(url, function(data){ 

      for (i = 0; i < data.paxcurjson.length; i++) { 

       console.log(data.paxcurjson[2].Currency); 

      }; 

     }); 

</script> 

L'unico messaggio di errore che sto ricevendo dalla mia console è:

08: 52: 52,661 nessun elemento found1 CurrencyQuery.php: 24: 4

Questo fondamentalmente si riferisce al mio script PHP che restituisce il json. Non ho idee sul perché questo non funzioni. Ho convalidato il JSON con un validatore online e sembra ok e il Jquery, dovrebbe essere ok. Qualcuno potrebbe darmi un indizio?

+1

hai provato a consolare 'dati'? usa 'console.log (dati)' e vedi cosa sta arrivando. Se il suo oggetto JSON è in arrivo, è necessario utilizzare 'data = $ .parseJSON (data)' –

+1

si visualizzano i dati json nel file "CurrencyQuery.php"? –

+1

Ciao, grazie per la tua rapida risposta. L'ho provato, ma sfortunatamente finisco con l'errore dell'elemento non trovato. Sono abbastanza sicuro che getJSON stia fallendo in qualche modo. Forse c'è qualcosa di sbagliato nel JSON ma non riesco a capire di cosa si tratta. –

risposta

0

Grazie a tutti, ho capito la soluzione. Ho dovuto avvolgere i dati codificati JSON dal mio script php in una funzione di callback. Potrei recuperare i dati allora. Non sono sicuro se questo sia il modo migliore per affrontare questo problema, ma finora funziona :)

0

necessità di cambiare alcune cose in uscita PHP per farlo gestita da Javascript o JQuery

<?php 
//just set a header before output 
header('Content-Type:application/json;'); 
echo json_encode($myArray); 

questo funziona sempre per me.

un'altra cosa, quando è necessario utilizzare l'output PHP come API JSON da analizzare in JQuery ecc ... Suggerisco di impostare la gestione degli errori su false, perché gli errori visualizzati da PHP possono causare output json non leggibile da jquery

+0

che è a causa della stessa politica di dominio del browser –