生成 N 个 url 以发出 AJAX 请求

Generating N urls to make AJAX requests

本文关键字:AJAX 请求 url 生成      更新时间:2023-09-26

我在创建后端的 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/

它将采用您的表单并转换名称/值对并将其序列化为字符串。

举个例子:

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

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

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

问题是,你如何阅读该网址

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
}

如果您在服务器端阅读,则此变量将为空白,并且没有任何含义...

所以取决于你在这次构造之后想做什么,否则这个的背景......