2010-10-28 20 views
0

Voici mon code. Vous devez regarder avec bonté souffrir de la «même politique d'origine» dans cette forme. Le domaine pour HTML est (http://127.0.0.1/jqload.html) & fichier php (http://127.0.0.1/conn_sql.php). C'est le format json: [{"options": "smart_exp"}, {"options": "user_int"}, {"options": "blahblah"}] Je souhaite ajouter des données json que je reçois en HTYML avec entrée de l'utilisateur & Je souffre de cela. Si j'utilise eval pour l'analyse syntaxique, cela fonctionne bien pour pointer sa mise ici. Mais si j'utilise JSON.parse pour analyser, tout le code cesse de fonctionner & ce message d'erreur est émis '"IMPORTANT: Supprimer cette ligne de json2.js avant le déploiement". J'ai mis mon code pour une autre question sur le forum de stackoverflow & On m'a dit que mon code souffrait de la 'même politique d'origine' qui cause les problèmes d'ajout de données JSON. Alors pouvez-vous voir si mon code souffre de cette politique? Bien que je doute, il souffre de cette politique que j'apprends que cela restreint si les fichiers résident sur différents domaines, ici les deux fichiers résident côte à côte.est mon code victime de la même politique d'origine?

code:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
"http://www.w3.org/TR/html4/strict.dtd"> 
<html><head></head> 
<body> 
    <form name="index"> 
    <p><input type = "text" id = "txt" name = "txt"></input> 
    <p><input type = "button" id = "send" name = "send" value = "send" onClick= 
     "ADDLISTITEM"></input> 
    <p><select name="user_spec" id="user_spec" /> 
    </form> 
    <script> 
    function ADDLISTITEM() 
    { 
     alert (json.length); // working 
     alert json.options[1]; // do not show any value, message just for testing 
     json.options[json.length+1] = 'newOption'; //not working; HELP HERE 
     jsonString = JSON.stringify(json);//working fine for current data 
     alert(jsonString); 
     //here I have to implement send this stringify(json) back to server,HELP 
     //HERE  
    }      
    </script> 
    <script src="http://code.jquery.com/jquery-latest.min.js"></script> 
    <script> 
    var json; 
    $(document).ready(function() { 
     jQuery .getJSON("http://127.0.0.1/conn_mysql.php", function (jsonData) { 
      json = jsonData; 
      $.each(jsonData, function (i, j) { 
       document.index.user_spec.options[i] = new Option(j.options); 
      }); 
     }); 
    }); 
    </script> 
</body> 
</html> 
+1

Nécessite une meilleure mise en forme et peut-être même un meilleur libellé. Je ne sais toujours pas exactement ce que vous essayez de faire, ni ce qui ne va pas. Et je ne sais pas ce que c'est "ce forum" (c'est StackOverflow?). –

+0

En fait, à l'origine je veux ajouter les données json que je reçois du fichier php dans mon formulaire HTML avec l'entrée de l'utilisateur. J'ai mis mon code pour une autre question sur le forum de stackoverflow et on m'a dit que mon code souffrait de la 'même politique d'origine' qui cause les problèmes de nappage des données json. Donc, pouvez-vous voir mon code souffrir de cette politique. Si oui, comment pourrais-je récupérer de ce problème de politique? Bien que j'ai des doutes que mon code souffre de cette politique que mes deux fichiers résident sur le même domaine. – XCeptable

+0

Quelles sont les erreurs obtenez-vous? Voyez-vous des messages dans votre console (Ctr-J)? Êtes-vous sûr que la chaîne JSON que vous obtenez contient du JSON valide (d'après http://www.jsonlint.com/)? Et la prochaine fois, s'il vous plaît ne pas utiliser des abréviations comme "u", utilisez simplement "vous". En outre, vous devriez éditer votre question originale plutôt que d'en ouvrir une nouvelle. Mais laissez-le pour l'instant, il était assez difficile de reformater votre question et d'indenter votre code. Pour mémoire, duplicata de [pourquoi JavaScript n'affiche pas les données json analysées?] (Http://stackoverflow.com/questions/4032553/why-javascript-is-not-displaying-parsed-json-data) –

Répondre

0

Vous êtes sur la bonne voie, mais ici: $.each(jsonData, function (i, j) { ... } vous Looping fait à travers chaque caractère de la chaîne jsonData, et non l'objet json. Changez simplement jsonData en json à l'intérieur du $.each(), et cela devrait fonctionner correctement (que vous utilisiez eval ou JSON.parse, mais je recommande ce dernier).

Modifié: Depuis que vous utilisez jQuery.getJSON(), vous n'avez pas besoin d'utiliser eval ou JSON.parse - jQuery fait pour vous. Donc, à l'intérieur de votre fonction de rappel, il suffit de définir json = jsonData.

<script> 
    var json; 
    $(document).ready(function() { 
     jQuery .getJSON("http://127.0.0.1/conn_mysql.php", function (jsonData) { 
     json = jsonData; 
     $.each(json, function (i, j) { 
      document.index.user_spec.options[i] = new Option(j.options); 
     }); 
     }); 
    }); 
</script> 
+0

merci à tous les deux. & désolé que mes pauvres mots confondent vous Frode.En fait, cette partie n'est pas mon problème, son fonctionnement bien.Je déclare/utilise Global var json ici juste être capable de l'utiliser dans le script ADDLISITEM après l'avoir analysé ici, et je suis en train d'analyser json en javascript ici que (ie js) je dois utiliser dans le script ADDLISTITEMS, je reformule mon post original, merci de le voir. données que je reçois de php 'jsonData' avec l'entrée de l'utilisateur – XCeptable