2013-03-03 80 views
2

所以我有一個JSON數組,它看起來是這樣的:

var myData = { 
    foo : { 
     biz : 'baz', 
     fig : 'tree' 
    } 
} 

這可以被輸入到地址欄,如:

http://www.mysite.com/index?foo[biz]=baz&foo[fig]=tree 

這將按預期工作。

的問題是,當我提供這個myData對象AngularJS的$http服務,如:

$http.get('http://www.mysite.com', { 
    data : myData 
}); 

它會把查詢字符串並沒有出現,甚至是正確的格式,即使它沒有esaped這是奇怪的方式。它看起來像這樣:

url?foo=%7B%22biz%22%3A%22baz%22%2C%22fig%22%3A%22tree%22%7D 

我該如何做這項工作?

+1

可能會更好張貼數據... GET得很完美字符長度限制 – charlietfl 2013-03-04 04:24:00

回答

3

這實際上是正確的格式。假設你的後端是PHP,當你做$_GET['foo']時,你會得到%7B%22biz%22%3A%22baz%22%2C%22fig%22%3A%22tree%22%7D。你看到的奇怪字符是因爲Angular是你編碼字符串的url。這必須在傳輸數據之前完成。如果您在瀏覽器中輸入爲foo[biz]=baz&foo[fig]=tree,則瀏覽器通常會自動對其進行urlen編碼。

urldecodingjson_decoding之後,您將獲得您期望的數據。

$foo = json_decode(urldecode($input), true); 

Array 
(
    [biz] => baz 
    [fig] => tree 
) 

然後,您可以訪問這些作爲$foo['biz']$foo['fig']

Demo

+0

。感謝你的快速回復! – 2013-03-03 23:59:12

相關問題