2010-03-26 6 views
2

Lorsque j'essaie de lire une chaîne JSON comme ci-dessous, elle passe à une boucle sans fin.Lecture d'une chaîne JSON dans Jquery

<script language="javascript"> 
      $(document).ready(function() { 

       $("#Button1").click(function() { 
        var json = "[{'City':'Lucknow','ID':'1'},{'City':'Mumbai','ID':'2'}]"; 
        $.each(json, function() { 
         alert(this['City']); 
        }); 


      }); 
    </script> 

Vous ne savez pas ce que je fais mal? Sil te plait aide moi!

Répondre

5

Utilisez jQuery.parseJSON pour analyser la chaîne JSON avec jQuery:

var json = "[{'City':'Lucknow','ID':'1'},{'City':'Mumbai','ID':'2'}]"; 
$.each(jQuery.parseJSON(json), function() { 
    alert(this['City']); 
}); 

L'avantage de jQuery.parseJSON est qu'il utilise l'implémentation native JSON.parse du navigateur s'il le supporte.


Modifier Le problème que cela ne fonctionne pas est sans doute que JSON ne permet que des chaînes à déclarer avec des guillemets doubles. Le correspondant excerpt from the JSON specification:

 string = quotation-mark *char quotation-mark 

    char = unescaped/
      escape (
       %x22/  ; " quotation mark U+0022 
       %x5C/  ; \ reverse solidus U+005C 
       %x2F/  ;/ solidus   U+002F 
       %x62/  ; b backspace  U+0008 
       %x66/  ; f form feed  U+000C 
       %x6E/  ; n line feed  U+000A 
       %x72/  ; r carriage return U+000D 
       %x74/  ; t tab    U+0009 
       %x75 4HEXDIG) ; uXXXX    U+XXXX 

    escape = %x5C    ; \ 

    quotation-mark = %x22  ; " 

    unescaped = %x20-21/%x23-5B/%x5D-10FFFF 

Ainsi, les éléments suivants doivent travailler:

var json = '[{"City":"Lucknow","ID":"1"},{"City":"Mumbai","ID":"2"}]'; 
+0

Merci pour la réponse! Même cela ne fonctionne pas ... – Bala

+0

@Bala: Oh, 'jQuery.parseJSON' a été ajouté en 1.4.1. Peut-être que votre version de jQuery ne le supporte pas. – Gumbo

+0

J'utilise jquery 1.4.1 – Bala

0
$("#Button1").click(function() { 
    var json = $.parseJSON("[{'City':'Lucknow','ID':'1'},{'City':'Mumbai','ID':'2'}]"); 
    $.each(json, function() { 
    alert(this['City']); 
}); 

Il est préférable d'utiliser json2.js de: http://www.json.org/js.html

+0

Great !! Merci mec! Ça a marché!!!!!!! – Bala

+0

var json = "[{'City': 'Lucknow', 'ID': '1'}, {'Ville': 'Mumbai', 'ID': '2'}]"; $ .each (eval (json), function() { alert (this ['City']); }); - Seulement cela fonctionne. Le code ci-dessus avec pasrJSON ne fonctionne pas. J'utilise jquery 1.4.1 – Bala