2014-12-31 80 views
0

我有一個我正在使用的API,他們期望某個參數是/on//off/。如果我使用標準的jQuery $.ajax,它將編碼爲%2Fon%2F,它在API上失敗。由於我沒有訪問API來解碼,我怎樣才能防止jQuery編碼斜線?

API使用GET,這裏是一個示例調用:

$.ajax({ 
    url: "api.website.com", 
    data: {id: id, stuff: stuff, device: device}, 
    type: "GET", 
    dataType: "html" 
}) 
+0

顯示你的代碼。原始數據是什麼樣的?你怎麼發送它?它是POST還是GET? –

+0

@MattBurland,雖然示例代碼是我能想象到的最簡單的ajax調用,但我認爲這並不是必須的。 – sharf

+0

這是必要的 - 因爲你正在使用GET。這意味着參數被插入到URL的查詢字符串中,並且*必須*被編碼。我不確定你的API可能會期望你在URL中傳遞未編碼的字符。你確定該API不是a)無論如何解碼它們,或b)期望一個POST而不是一個GET? –

回答

2

jQuery將嘗試編碼查詢字符串,因爲這是你應該做什麼。所以這些/字符將被編碼。唯一的解決方法是將自己的查詢字符串附加到url之後。幸運的是,也許不是,你實際上只需要做到這一點對於那些將不得不違規字符(在你的榜樣stuff)的參數:

$.ajax({ 
    url: "http://api.website.com?stuff=" + stuff, 
    data: {id: id, device: device}, 
    type: "GET", 
    dataType: "html" 
}) 
+0

最糟糕的情況,謝謝。要與負責API的人說一聲,看看我是否無法讓他們更新它。 – sharf

+0

@sharf我面臨同樣的問題..你在這些年中找到解決方案嗎? –