2011-08-08 41 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具有某種鏈接功能,但是我不知道如何切換到JQuery的AJAX功能。我想要做的就是完全避免表達式引擎編碼,如果可能的話用Javascript完成所有的工作(如果需要,還可以使用PHP)。

回答

1

你有沒有試過「unes​​cape('encoded string')」?爲了解決 '+' 的問題,你可以做

// 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

試用decodeURIComponent()而不是decodeURI()

decodeURI用於完整的URL,而decodeURIComponent適用於任何字符串。

+0

要是同樣的問題同上,但肯定的,decodeURIComponent工作,謝謝。 – mheavers