2010-06-22 9 views
2

J'ai une fonctionComment utiliser chaîne JSON en javascript

var url = "MyAvailability.aspx?mode=get"; 

     $.get(url, 
     function(data) { 
      alert(data); 
     }); 

qui retourne une représentation de chaîne JSON

events: [{'id': 1,'start': new Date(year, month, day, 12),'end': new Date(year, month, day, 13, 30),'title': 'Lunch with Mike'},{'id': 2,'start': new Date(year, month, day, 14),'end': new Date(year, month, day, 14, 45),'title': 'Dev Meeting'},{'id': 3,'start': new Date(year, month, day + 1, 17),'end': new Date(year, month, day + 1, 17, 45),'title': 'Hair cut'},{'id': 4,'start': new Date(year, month, day - 1, 8),'end': new Date(year, month, day - 1, 9, 30),'title': 'Team breakfast'},{'id': 5,'start': new Date(year, month, day + 1, 14),'end': new Date(year, month, day + 1, 15),'title': 'Product showcase'},{'id': 6,'start': new Date(year, month, day, 10),'end': new Date(year, month, day, 11),'title': 'I'm read-only',readOnly: true'}]'; 

If i do alert(data); 

cela fonctionne, mais si je suis en train d'affecter les données à une variable échoue .

mon but est de revenir de la fonction quelque chose comme

return { 
     events: [ 
     { 
      "id": 1, 
      "start": new Date(year, month, day, 12), 
      "end": new Date(year, month, day, 13, 30), 
      "title": "Lunch with Mike" 
     }, 
     { 
      "id": 2, 
      "start": new Date(year, month, day, 14), 
      "end": new Date(year, month, day, 14, 45), 
      "title": "Dev Meeting" 
     }, 
     { 
      "id": 3, 
      "start": new Date(year, month, day + 1, 17), 
      "end": new Date(year, month, day + 1, 17, 45), 
      "title": "Hair cut" 
     }, 
     { 
      "id": 4, 
      "start": new Date(year, month, day - 1, 8), 
      "end": new Date(year, month, day - 1, 9, 30), 
      "title": "Team breakfast" 
     }, 
     { 
      "id": 5, 
      "start": new Date(year, month, day + 1, 14), 
      "end": new Date(year, month, day + 1, 15), 
      "title": "Product showcase" 
     }, 
     { 
      "id": 6, 
      "start": new Date(year, month, day, 10), 
      "end": new Date(year, month, day, 11), 
      "title": "I'm read-only", 
      readOnly: true 
     } 
    ] 
    }; 

mais je ne suis pas en mesure de

si je ne retourne données doesn t fonctionnent

pourriez-vous me aider s'il vous plaît je suis devenir fou sur ce

Répondre

3

Il semble que vous manquiez la spécification d'un format de données dans votre appel .get. S'il vous plaît essayer celui-ci:

$.get(url, 
function(data) { 
    alert(data); 
},"json"); 

ou envisager d'utiliser la méthode .getJSON d'un jquery

+0

Lorsque j'utilise la fonction ci-dessus la fonction (données) est ignoré. Dois-je importer une bibliothèque pour utiliser Json? – GigaPr

+0

Qu'est-ce que cela signifie que la fonction est ignorée? Avez-vous des erreurs javascript? – dzida

0

Le problème n'est pas avec l'instruction return, vraiment, mais avec le fait que la fonction est de manière asynchrone. Ainsi, si vous mettez votre appel $.get() dans une fonction, alors cette fonction renverra avant que cette fonction de rappel ne soit invoquée. Au lieu de travailler avec une valeur de retour, demandez à la fonction elle-même de faire le travail (ou appelez une autre fonction pour faire le travail).

1

Votre question n'est pas trop claire, juste dire "ça échoue" ou "ça ne marche pas" n'aide pas beaucoup. Toutefois, si vous retournez une réponse JSON au navigateur, vous devez:

  1. Utilisez la méthode $.getJSON, au lieu de $.get, OU

  2. Définissez le type de données de votre $.get demande « JSON » .

Si vous ne faites pas l'une de ces choses, vous devrez analyser manuellement la chaîne retournée dans un objet en faisant:

var myObj = eval('(' + data + ')'); 

où la variable de données contient la chaîne JSON retournée .

Questions connexes