2010-06-03 50 views
1
var url  = relativeURI+'/rest/PPS/Prod/'+encodeURIComponent(prod)+'/Section/'+encodeURIComponent(section); 

$j.ajax({ 
    url: url, 

    type: 'POST', 

    error: function(){ 
    alert('Error'); 
    }, 
    success: function(){ 
    alert('ItWorks'); 
    } 
}); 

} 

在這個ajax調用中,如果在參數prod或sec中有'/',那麼會出現錯誤。該請求甚至不會觸及服務器。我在參數上使用encodeURIComponent。對於其中沒有'/'的其他參數,它工作正常。請幫忙。Ajax調用的REST URL參數中的'/'的問題

+0

您是否希望斜槓最終成爲URL中的實際分隔符,還是希望它們被視爲URL的每個*部分*的一部分? – Pointy 2010-06-03 23:39:39

+0

我希望參數'prod'或'section'中出現的斜槓不被視爲URL分隔符。 例如.. 我的URI是 /.../rest/PPS/Prod/{B39}/Section/{PVT/SSS/F} 添加了大括號來表示參數。 使用encodeURIComponent()後,我得到的URI如 /.../rest/PPS/Prod/{B39}/Section/PVT%2FSSS%2F 但是,這是失敗的。我收到一個錯誤。因爲其他參數沒有斜線在其中工作良好。 – srila 2010-06-03 23:46:41

+0

你會得到什麼錯誤?是來自瀏覽器還是來自服務器的錯誤? – Pointy 2010-06-03 23:51:52

回答

0

我複製了你的邏輯,請求確實去了服務器。但是,如果服務器不喜歡這個URL,那麼你的服務器端代碼甚至不會被調用。 (在我的情況下,沒有服務器端代碼,但我可以看到404響應,並可以看到服務器--Apache - 解碼了URL)。

因此,也許你的服務器無法解碼的URL。你確定你在嘗試非jQuery路由時編碼了它嗎?您可能不需要撥打encodeURIComponent。如果你刪除它們會發生什麼?

0

我已經編碼參數,並嘗試了非jQuery路線,它工作正常(使用RESTEasy)。當我刪除斜線,然後我得到404響應,這意味着沒有該URI的REST方法。