2016-06-17 22 views
0

私は、app-drawer-templateからsrcという名前のフォルダを持つポリマーパッケージ構造を持っています。このフォルダにはentries.jsonというファイルがあります。私は、ユーザーがペーパー・ダイアログからフォーム・データを送信するときに、このjsonオブジェクトに項目を追加する方法を理解しようとしています。このフォームから値を取得する方法を理解しています。私はjsonファイルからコンテンツを取得し、このjsonに新しい項目を追加し、新しい項目を.jsonファイルに書き戻す方法を理解できないようです。ここjavascriptでJSONファイルに書き込む

は私のフォームです:

<paper-dialog id="applynow" entry-animation="scale-up-animation" exit-animation="fade-out-animation"> 
     <paper-dialog-scrollable> 
     <img src="/images/logo.png" width="80%" height="auto" style="margin: 0 auto;"/> 
     <paper-input id="name" label="Full Name"></paper-input> 
     <paper-input id="phone" label="Phone Number"></paper-input> 
     <paper-input id="email" label="Email"></paper-input> 
     <paper-textarea id="desc" label="Why Pick You?" char-counter maxlength="400"></paper-textarea> 
     <paper-button on-click="submitForm">Submit</paper-button> 
     </paper-dialog-scrollable> 
     </paper-dialog> 

そして、ここでは、JavaScriptです:

submitForm: function() { 
     var data = JSON.parse("/src/entries.json"); 
     data.entries.push({ 
      name: this.$.name.value, 
      phone: this.$.phone.value, 
      email: this.$.email.value, 
      desc: this.$.desc.value 
     }); 
     data = JSON.stringify(data); 
     } 

それは)私がしようとしているが、私は、私はJSON.parseを(使用クロームコンソールから見ます入力が、ファイルパスではなく、テキストのjson形式の文字列であることを期待しています。このファイルから読み込み、JavaScriptに書き戻す方法はありますか?このファイルはユーザーのストレージに格納されるのではなく、私のパッケージ構造に格納されています。

編集:私は読んで、私のJSONに追加することができましたが、私はまだ、このJSONファイルを書き換える方法が必要ですCHRISVする

感謝。 jsonファイルを取得して新しいエントリを追加してコンソールに表示する、新しいjavascript関数を示します。この.jsonファイルを新しい行に書き換える簡単な方法はありますか?

JSON解析を解析する文字列または他の入力、NOTロードし、解析するファイルパスを期待しているためだ
submitForm: function() { 
     var newName = this.$.name.value; 
     var newPhone = this.$.phone.value; 
     var newEmail = this.$.email.value; 
     var newDesc = this.$.desc.value; 
     var json = $.getJSON("src/entries.json", function(data) { 
      data.entries.push({ 
      name: newName, 
      phone: newPhone, 
      email: newEmail, 
      desc: newDesc 
      }); 
      console.log(data); 
     }); 
     } 
+1

。彼らはユーザーのストレージにはないので、サーバー経由以外ではそれらに書き込む方法はありません。どのようにファイルを取得して保存しているか再考する必要があるかもしれません。 –

+0

私はこの情報をどのように保存するのか考え直す道を行くことに決めました。私はすでにホスティングにFirebaseを使用していたので、Firebaseのデータストレージに行きました。 –

答えて

0

ファイルを読み込むためにjQuery(またはそれ以外の場合)を使用することをお勧めします。

は、次に、あなたが行うことができます: http://api.jquery.com/jquery.getjson/

注:

$.getJSON("file/path/entries.json", function(data) { 
    //Data loaded here 
    //Do whatever you want with the data 
} 
.fail(function(){ 
    //Handle error with reading json file here 
}); 

あなたがここにjQueryのgetJSON()についての詳細を読むことができますJavaScriptがネイティブにクロスリファレンスクエリー(同一生成元ポリシー)を許可していないので、あなたがよサーバー上で実行するか、ローカルサーバーをシミュレートする必要があります。私。他の方法でMAMPまたはローカルホストを介して実行します。ここでは、以前にリンクされたURLと、それについての記事を読む:https://en.wikipedia.org/wiki/Same-origin_policy

編集: が見つかりました、あなたの問題に関連して、以前に答えポスト:あなたは新しいエントリを取り、ファイルに保存し、サービスを必要とするhttps://stackoverflow.com/a/19473929/4315724

+0

私は答えを感謝しますが、私はまだこの新しいエントリでこの.jsonファイルを書き直す必要があります。 javascriptからこのjsonファイルに書き戻す簡単な方法はありますか、これはこれを完了するためにPHPやその他の言語を使用しますか?私は指定したような私のjavascriptの変更で自分の投稿を編集しました。 –

+0

JavaScriptはクライアントサイドの言語であり、サーバーサイドのデータソースを混乱させてはならないことに注意してください... jsonファイルを更新するには、サーバーにRESTを使用してデータソースを接続/ホストする必要がありますこの方法で更新をポストするAPI、またはJSONファイルへの独自の「ポスト」メソッドを作成するためのサーバー側(PHP)ソリューションを作成することができます。おそらくここの答えはあなたを助けることができます:http://stackoverflow.com/a/20948680/4315724 – chrisv

+0

答えは非常に高く評価されています。物事をより簡単にすることが証明されるようになりました。それにもかかわらず、助けはいつも高く評価されています。 –

関連する問題