2014-02-10 28 views
0

在發送到UTF8使用REST服務器的AJAX請求時任一部分,無視不屬於任何部分英文字符REST無視不是英文字符,接收UTF8

我使用JAVA與REST上服務器端和客戶端以UTF8發送包含希伯來詞的Ajax請求。

Ajax請求:

var clientNumber = '12344432432'; 
var userID = '321321321'; 
var someHebrewWord = ...; 
var someEnglishWord = ....; 

var servletUrl = '/Management/services/manager/' + clientNumber + '/' + userID + '/' + someEnglishWord + '/' someHebrewWord; 
alert('Sending this :' + servletUrl); 
$.ajax({ 
    url: servletUrl, 
    type: 'POST', 
    cache: false, 
    data: { }, 
    success: function(data){ 
     alert('Return value is:' + data); 
     window.location = "./replyPage.html"; 
    } 
    , error: function(jqXHR, textStatus, err){ 
     alert('text status '+textStatus+', err '+err + " " + JSON.stringify(jqXHR)); 
    } 
}); 

在服務器端,我使用REST:

@Produces({ "application/json" }) 
@Path("/manager") 
public class Management { 


    @POST 
    @Path("{clientNumber }/{userID }/{someEnglishWord}/{someHebrewWord}") 
    @Produces("application/json") 
    public boolean insert(@PathParam("clientNumber") String clientNumber, @PathParam("userID") String userID, 
           @PathParam("someEnglishWord") String someEnglishWord, @PathParam("someHebrewWord") String someHebrewWord) 
    { 
     // do some stuff 
    } 


    @POST 
    @Path("{clientNumber }/{userID }/{someEnglishWord}") 
    @Produces("application/json") 
    public boolean updateSomething(@PathParam("clientNumber") String clientNumber, @PathParam("userID") String userID , @PathParam("someEnglishWord") String someEnglishWord) 

    { 
     // do other stuff 
    } 



    // more code 

} 

所以,在發送AJAX請求時,updateSomething()被調用,而不是insert(), 甚至儘管我發送4個字段,而不是3個!

這是什麼原因導致的?我該如何解決?

非常感謝

+0

那麼當您收到以下文字時,您會怎麼做?「我想自我介紹一下,附上一份我的簡歷。」這不符合「英語」的標準嗎?我的觀點是,不存在英語與非英語字符之類的東西。英語借用多種語言,並且您可能會遇到有效的英語句子中的「非英語」字符。 –

+0

@JimGarrison:我的意思是如果我發送而不是'我想介紹一下自己。附件是我résumé'的副本,這樣的:'שלוםאנירוצהלהציגאתעצמיומסמךקורותהחייםשלימצורף',那麼這將被調用的代碼是'updateSomething'。 – ron

回答

2

URL中的允許字符受到限制。您必須使用encodeURIComponent對URL進行編碼。

一個更好的選擇可能會被髮布在一個數據這些參數-variable和使用@FormParam代替@PathParam的。