2012-10-13 18 views
10

我試圖從使用jQuery $ .get的站點獲取一些數據。我需要設置2個參數相同類型的:如何將相同類型的多個參數傳遞給jQuery獲取

..&q=Some Text&q=Some other text 

jQuery的似乎覆蓋Q的第一個實例第二,僅發送1迂迴方式?

這是我嘗試使用代碼:

var params = { 
     "otherParam":"x", 
     "q":text, 
     "q":title 
}; 
$.get(url, params, mySuccessFunction); 
+1

STOP,無用的無意義的編輯。這是違反了Stackoverflow編輯政策。 –

回答

25

嘗試:

var params = { 
    "otherParam": "x", 
    "q": [ text, title ] 
}; 

編輯 —更多信息:數組值的參數,如由jQuery的特殊處理。爲了安撫許多常見的服務器框架,默認情況下(自1.5或1.6版本以來我認爲)這些會導致參數名稱包含「[]」(開括號和近括號字符)作爲後綴(沒有數字,與我的錯誤相反評論如下)。如果你不想那樣,你可以設置

jQuery.ajaxSettings.traditional = true; 

它只會是「q」而不是「q []」。

+0

這似乎沒有建立'&q = text&q = title'。在我對這個解決方案的測試中,我得到一個奇怪的URL:'?otherParam = x&q%5B%5D = text&q%5B%5D = title' –

+0

是的,這不起作用 –

+1

@CliffRibaudo我很確定它確實有效;你有沒有檢查通過Firebug或Chrome調試器或類似的東西發送到服務器?請注意,jQuery將(我認爲)創建參數「q [0]」,「q [1]」等,並在名稱中包含括號內的索引。你可以通過設置'jQuery.ajaxSettings.traditional = true'來做到這一點。 – Pointy

1

你可以寫這樣的網址:

$.get(
    url+'?q='+encodeURIComponent(text)+'&q='+encodeURIComponent(title)+'&otherParam='+encodeURIComponent('x'), 
    mySuccessFunction 
); 
+0

超棒的傢伙!我能夠使用它的一個變種來獲得我想要的。 KEWL! –

+0

jQuery很樂意爲您做這項工作:-) – Pointy

+0

您的建議如何被我的服務器拒絕? –

10

而另一種方式來解決這個問題,不需要encodeURIComponent()jQuery.ajaxSettings.traditional = true;搞亂,我寧願不這樣做,因爲我不想幹涉(甚至暫時)與網站的其他部分可能同時進行。

是:

var params=[ 
     {name:"q", value:title}, 
     {name:"q", value:text} 
]; 
$.get(url, params, mySuccessFunction); 
+2

請注意,如果您避免使用'.get()'簡寫並直接使用'$ .ajax()',則可以強制傳統序列化而不更改任何全局設置:$ .ajax({traditional:true,url:。 ..})'。但這是另一個不錯的選擇。 –

5

另一種方法,而無需修改jQuery.ajaxSettings.traditional = true;是使用$.param()http://api.jquery.com/jQuery.param/

因此,像這樣:

var params = { 
    "otherParam": "x", 
    "q": [ text, title ] 
}; 

$.get(url, $.param(params, true), mySuccessFunction); 
+0

偉大的解決方案。謝謝。 – TrojanName

-1

事情非常簡單,在jQuery的網站http://api.jquery.com/jquery.param/描述。

首先創建一個params對象

var params=[{ 
    name: 'param1', 
    value: 'hello' 
}, 
{ 
    name: 'param1', 
    value: 'alex' 
}]; 

下創建要被髮送到該服務的數據。

var data = jQuery.param(params); 

該對象可以插入爲ajax請求的數據參數。我喜歡使用設置對象

var settings={ 
    url: 'api/domain/timeline', 
    type: 'get', 
    contentType: 'application/json', 
    data: data 
    }; 
$.ajax(settings); 
相關問題