2011-08-31 21 views
1

我有以下的JavaScript/Mootools的代碼:MooTools的請求對象不是讓我在我的查詢字符串「+」號

var str = self.tI.get('value').replace(/\s/g,'+'), 
    data = 'action=getplaces&str=' + str + '&latLng=' + $('coords').get('value'), 
    r = new Request({ 
     url: 'action.php', 
     method: 'get', 
     link: 'cancel', 
     onSuccess: function (response) { 
      /* Do Stuff */ 
     } 
    }).send(data); 
console.log(str); 

在第一行我+標誌更換任何空間。當我在控制檯中記錄str的值時,我會得到相應的值(即:'blabla + bla')

但是,當我發送請求時,我的請求失敗。如果我查看標題和查詢字符串,+符號會簡單地用空格替換(即:'blabla bla')

這是怎麼回事?有沒有辦法解決它?

+0

嘗試像這樣對str進行urlencode:'str = encodeURIComponent(str);'。哦,還有一件事,你爲什麼要用「+」替換空格?爲什麼不用uri編碼來編碼空間呢? – Alxandr

+0

還有一件事,你說你看看請求頭。你是從服務器還是客戶端做到這一點?如果它在服務器上,這可能意味着服務器已將空間解析爲+(我知道在某些情況下可能會發生這種情況)。 – Alxandr

+0

@Alxandr:客戶端。只需Chrome/Firefox網絡面板即可。 – ReX357

回答

0

對於任何人想取代它,我的問題最終被服務器端。一旦數據到達服務器端,我試圖將它合併到另一個URL中,但服務器已經將%20和+分解爲空格。所以必須在服務器端進行一些字符串操作。

-1

你需要逃避加,因爲它是在HTML的URL 保留字符與+

相關問題