我正在爲網站開發ajax filtering system
。追加查詢字符串的最佳方法ajax
最終用戶選擇過濾器的點已經在URL上有一個查詢字符串。
我想獲得這個查詢字符串並追加我的數據,我需要輸入名稱&值。
我目前所擁有的JS,這是我知道的一份懶散工作 - JS並不是我的強項!
$("#narrowSearch").submit(function(event) {
function checkInputs(){
var $checkboxes = $("input:checkbox");
var opts = [];
$checkboxes.each(function(){
if (this.checked){
opts.push(this.value);
}
});
return opts;
}
var opts = checkInputs();
if(document.location.search.length) {
opts += getUrlVars();
}
updateVenues(opts);
event.preventDefault();
});
function updateVenues(opts){
$.ajax({
type: "POST",
url: "/venue-search/ajax/",
dataType : 'json',
cache: false,
data: opts,
success: function(records){
$("#searchResults").empty();
$.each(records, function(idx, record){
$("#searchResults").append('<section class=\"griditem\"><a href=\"/venue-preview/'+record.id+'" class=\"various fancybox.ajax\"><span class=\"listing_img\"><img src=\"<?php echo MEDIAURL; ?>'+record.main_image+'\"><span class=\"listing_title\">'+record.title+'</span></span></a></section>');
});
}
});
}
function getUrlVars()
{
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for(var i = 0; i < hashes.length; i++)
{
hash = hashes[i].split('=');
vars.push(hash[1]);
vars[hash[0]] = hash[1];
}
return vars;
}
用此,它當前返回查詢字符串爲:camping1,TF74AA,20:
。 1,TF74AA,20
是當前查詢字符串,露營是在過濾之前選中的複選框。正如你所看到的,野營& 1之間沒有逗號。此外,這不包括任何名稱,只有值。
理想情況下,我想查詢字符串是:
?name=value&name=value
或JSON format
,然後我可以分析它的服務器端,並返回一個JSON響應。
我一直在尋找一個基於我期待實現的教程,但我很掙扎。因此,我使用各種教程,並從每個部分。
我希望我解釋得不錯。
不要使用查詢字符串,請爲每個參數使用具有屬性的對象。 jQuery會自動將它轉換爲一個查詢字符串。 – Barmar 2014-08-29 13:18:41
好吧,所以對你的建議的工作表單數據現在顯示爲'[object object] [object Object]' – 2014-08-29 13:27:28
不要使用FormData,只需使用普通的Javascript對象。 '{name1:value1,name2:value2,...}' – Barmar 2014-08-29 13:30:35