2011-08-08 15 views
0

引用符を含むJSONデータを読み込もうとしています。実際にはその文字列をエスケープし、続くテキストを変数として扱います。これをどうしたらいいのでしょうか?ここではJSONフィード(それは表現エンジンに組み込まれているので、中括弧を無視する)である:JQuery、JSON - JSONデータの引用符での問題

<?php echo substr($_SERVER["REQUEST_URI"], strpos($_SERVER["REQUEST_URI"],"=")+1, strpos($_SERVER["REQUEST_URI"],"&")-strpos($_SERVER["REQUEST_URI"],"=")-1);?>([ 
{exp:channel:entries channel="blog" limit="10" dynamic_start="on" disable="member_data"} 
{ 
    "title": "{exp:url_encode}{title}{/exp:url_encode}", 
    "body": "{blog_one_liner}", 
    "link": "{blog_image_link}", 
    "img" : "{blog_image}" 
}, 
{/exp:channel:entries} 
]); 

は、ここでjqueryの中で起こる解析です:

function loadBlog(){ 
    $.getJSON("http://superfad.com/work/work_json?callback=?&test=test", blogLoaded); 
} 

    function blogLoaded(data){ 


     for (dataIndex in data) { 
      var blogTitle = decodeURI(data[dataIndex].title); 
      var blogContent = data[dataIndex].body; 
      var blogLink = data[dataIndex].link; 
      var blogImg = data[dataIndex].img; 

      $("#blog_results").append('<li class="blog"><a href="' + blogLink + '" target="_blank"><img class="blog_img" src="' + blogImg + '"/></a><span class="blogtitle">'+ blogTitle + '</span> - '+ blogContent + '</li>'); 

     }; 
    } 

あなたは、私が試した見ることができます、のためにタイトル、表現エンジンでエンコードする(うまく動作する)、javascriptでデコードする(これは動作しません)。 JSONにはある種のlinkify関数があることがわかりましたが、JQueryのAJAX機能に切り替えることなく、JSONにどのように行うかを理解できませんでした。私がしたいのは、エクスプレッション・エンジン・エンコーディングを完全に避け、可能であればJavascriptですべてを行います(必要に応じてPHPもあります)。

答えて

1

「unescape( 'encoded strings')」を試みたことがありますか? 「+」問題を解決するためには、

// Create a regular expression to search all +s in the string 
var lsRegExp = /\+/g; 
// Return the decoded string 
return unescape(String(psEncodeString).replace(lsRegExp, " ")); 

リファレンス行うことができます。http://www.kamath.com/codelibrary/cl006_url.asp

+0

Unescapeは動作しますが、式エンジンからのスペースを表す+記号は残ります。 – mheavers

+0

私の答えが更新されました。 –

+0

decodeURIComponent()で動作します... –

2

decodeURI()の代わりにdecodeURIComponent()を試してください。

decodeURIは完全なURL用ですが、decodeURIComponentは任意の文字列に対して機能します。

+0

を、上記と同様の問題を抱えていたが、はい、は、decodeURIComponentは動作しますが、感謝します。 – mheavers