2011-12-06 74 views
0

我有這個網址 -爲什麼此查詢中斷?

http://localhost/app_demo/sample.php?jsonRequest={"GenInfo":{"type":"Request","appname":"XXX","appversion":"1.0.0"},"searchDish":{"userId":"295","dishName":"","est":"Pizza &amp; Wings","location":"","type":"","priceRange":"","deviceos":"value","deviceId":"<UDID>","deviceType":"value","pageNo":"1"}} 

時,我打這個URL和打印

print_r($_REQUEST['jsonRequest']); 

字符串只打印高達

{"GenInfo":{"type":"Request","appname":"XXX","appversion":"1.0.0"},"searchDish":{"userId":"295","dishName":"","est":"2 Pizza 

我搜索網,但沒有得到答案。這是什麼解決方案? 請幫忙, 謝謝。

+1

不要使用'$ _REQUEST'指定'$ _POST'或'$ _GET' – Jakub

回答

4

查詢字符串通常由鍵/值對組成,查詢字符串的起始位置是問號(?),然後所有對以「&」符號分隔(&)。在您的值中加上&符號就像開始一個新參數一樣。

但是,這不是正確的做法。你不應該把JSON放在查詢字符串中。

如果你真的必須在查詢字符串的符號,使用%26,而不是&放。 %26是&字符的十六進制值。

2

你應該做一個POST請求而不是一個GET請求:

  • 編碼衝突
  • URI長度限制
1

字符 「&」 的問題,因爲它被保留。 (是查詢字符串params分隔符) 在您的GET請求上使用它之前,您必須使用「urlencode」字符串。所以像&這樣的字符被轉換。但作爲jValdron指出,你不應該把JSON放在查詢字符串中,但你可以這樣做。

所以你URLEncode的字符串:

$url = 'http://localhost/app_demo/sample.php?jsonRequest='; 
$jsonRequest = urlencode('{"GenInfo":{"type":"Request","appname":"XXX","appversion":"1.0.0"},"searchDish":{"userId":"295","dishName":"","est":"Pizza &amp; Wings","location":"","type":"","priceRange":"","deviceos":"value","deviceId":"<UDID>","deviceType":"value","pageNo":"1"}}'); 
$url .= $jsonRequest; 

然後你urldecode

print_r(urldecode($_REQUEST['jsonRequest'])); 

同樣,你不應該把JSON查詢字符串。