2013-08-01 66 views
0

我運行上的URI REST服務同樣以編碼以 「/」 不工作

本地主機/ 1.0/JSON /主機/ REST參數:列表/

其中:列表是要搜索的參數。 相應的PHP函數(使用東力)

public function get($list) { 
     $list = urldecode($list); 
     $list = mysql_real_escape_string($list); 

正在解碼並逸出提供任何輸入。 只要沒有輸入必須進行真正的編碼,它就會工作。

相應的js應用程序使用encodeURIComponent方法來編碼的輸入框

var selectedList = encodeURIComponent($('#SelectList').val()); 

進行的輸入,並觸發一個jQuery.get上述REST資源

$.get("http://localhost/rest/1.0/json/host/"+ selectedList + "/", function(data) { 

如果像「923的輸入/ 50'參數被正確編碼

XHR at「localhost/rest/1 「0/json/host/923%2F05 /」

但是仍然不可能將連接到這個參數的記錄從我的db中取出。 我一直得到404。所以我的猜測是,不可能像「/」一樣編碼字符。

我該怎麼做才能解決這個問題?

回答

0

我已經通過將「/」字符更改爲「|」在執行REST呼叫之前。 JavaScript參數的編碼是這樣工作的。

selectedHostList = encodeURIComponent(
$('#select_hostlist').val().replace('/','|')); 

我的PHP REST的服務使用下列轉換的回所需的值

$list = urldecode($list); 
$list = mysql_real_escape_string($list); 
$list = str_replace("|", "/", $list);