2009-06-07 11 views
2

html DOMのフォームは、クリックするチェックボックス(複数ある場合があります)です。私のリストオブジェクトは一重引用符で区切られているので、アポストロフィを使用するときには、説明文字列に問題が発生します。これは、フォーム内のチェックボックスのいずれかです。JSONをJavaScript配列に文字列化する方法

<input type="checkbox" id="cbx" name="cbx" value="{'getPic': 'url', 'picsrc': 'http://lh3.ggpht.com/_ZB3cttqooN0/SVmJPfusGWI/AAAAAAAADvA/GuIRgh6eMOI/Grand%20Canyon%201213_121508214.JPG', 'pos': None, 'description': 'Here's what it REALLY looks like at 5:30am! Bring your headlight!'}"> 

確認のチェックボックスの値を読み取り、配列(リスト)にそれらをプッシュするのjavascript:

var pylist = []; 
    for (i=0; i<document.picList.cbx.length; i++) { 

      if (document.picList.cbx[i].checked) { 
       pylist.push(document.picList.cbx[i].value); 
      } 
    } 

var getstr = JSON.stringify(pylist); 

問題は常にそのgetstrですこの時点では、descriptionプロパティの一重引用符の後にすべてが切り捨てられています。 私は少し役に立たないためにそれをエスケープするさまざまな方法を試みました。

+0

参考までに、これは有効なJSONではありません。文字列は二重引用符で囲む必要があり、JSONシリアライザはこれに準じます。 – cHao

答えて

1

問題は、チェックボックスの値が既にJSON文字列であることです。一つの解決策は、価値にJSON.parse()を呼び出すために、次のようになります。私は同じ問題に遭遇しました

var pylist = []; 
    for (i=0; i<document.picList.cbx.length; i++) { 

      if (document.picList.cbx[i].checked) { 
       pylist.push(JSON.parse(document.picList.cbx[i].value)); 
      } 
    } 

var getstr = JSON.stringify(pylist); 
0

- 私たちは隠しフィールドにJSONを固執ので、我々はすべてのサーバーを照会する必要はありませんページ。私たちはhtmlに入れる前にアポストロフィを "コード"に置き換えました。コードをアポストロフィで置き換えるjavascript関数を追加しました。

本当にハッキーですが、本当にうまくいきます。もちろん、サーバーからjsonを取得するコードと、javascriptで解析する必要がある場所が1つあります。コード全体でメソッドを繰り返すと、マイレージが変わります。

関連する問題