生成 N 个 url 以发出 AJAX 个请求

Generating N urls to make AJAX requests

创建后端 API 后我遇到了一个大问题。我有一个带有 GET AJAX 方法的表单来过滤和获取结果。它工作正常,但由于 url 是根据用户选择生成的,因此有 N 个选项我无法在使用或不使用每个过滤器字段时创建每个组合。

这里是一个生成的例子 url:

http://example.com/api/?select1=choice1&select2=choice2&tag=word&active=true

此外,如果用户决定仅选择 select1tag

我所做的实际上让我感到尴尬,因为我知道这不是一个好的解决方案(甚至不是很接近),甚至将其可视化,我只是无法想象如何让它工作,但它看起来像这样:

select1 = $('#id_select1').find(":selected").text();
select2 = $('#id_select2').find(":selected").text();

if (select1 === "All" && select2 === "All") {
    url_get = '';
} else if (select1 === "All" && select2 !== "All") {
    url_get = 'select2=' + choice2
} else if (select2 === "All" && select1 !== "All"){
    url_get = 'select1=' + choice1
} else {
        url_get = 'choice1=' + select1 + '&' + 'choice2=' + select2
}

有没有更好的方法来继续这个? 那边有 Javascript 忍者吗?

一个选项正在使用 .serialize()https://api.jquery.com/serialize/

它将获取您的表单并将 name/value 对转换为字符串。

一个例子:

var url_get = $('#myform').serialize();

从 AJAX 获取 URL 中的方法,即使 PURE Javascript 读取每个参数,即使该参数不包含任何内容

http://example.com/api/?select1=choice1&select2=&tag=word&active=

问题是,你怎么读URL

ASP 经典:

Var1 = Request("select1")
Var2 = Request("select2")
Var3 = Request("tag")
Var4 = Request("active")

所以在那种情况下你应该构造 URL 即使选择了选项并且没有理由 "dinamic" 构造 URL.

function send() {
    var1 = form.select1.value;
    var2 = form.select2.value;
    var3 = form.tag.value;       //in the case is an option
    var4 = form.active.value;    //same as before

    URL = "http://example.com/api/?select1="+var1+"&select2="+var2+ "&tag="+var3+"&active="+var4;

    (AJAX object).Open(GET, URL, True); //True is Async
    (AJAX object).onreadystatechange = function() { 
        if ((AJAX object).readyState == 4 && (AJAX object).status == 200) {
            //something
        } 
    }
    ajax.send(null); //Null since GET method
}

如果您在服务器端读取此变量将是空白的,并且没有任何暗示...

这取决于你在这个构造之后想做什么,否则这个的上下文...