为了账号安全,请及时绑定邮箱和手机立即绑定

使用两个不同的 url 调用 Ajax 调用

使用两个不同的 url 调用 Ajax 调用

慕妹3242003 2023-04-27 15:17:35
我有一个搜索框                <div id="" class="col-10 pt-2  page-title">                    <label>                        <input type="search" id="search" class="form-control form-control-sm " placeholder="Search">                    </label>                </div>我的要求是当我按下任何字符并单击需要搜索的输入按钮时var x = document.getElementById("search");x.addEventListener("keyup", function(event) {  if (event.keyCode === 13) {   var search = document.getElementById("search").value;    console.log(search)  }});这将打印我在控制台中输入的单词....我正在进行 Ajax 调用     $.ajax({        dataType: "json",        url: "{% url 'some url name' %}?limit=10",        },这将加载 10 条记录....相同的 API 也可以与搜索一起使用......在此我们需要传递一个额外的参数......     $.ajax({        dataType: "json",        url: "{% url 'some urn name' %}?limit=10?q="+seach,        },但是在调用 url 时搜索值变为未定义如何使用 url = "{% url 'some url name' %}?limit=10" 调用相同的 Ajax 调用,如果用户使用 url "{% url 'some urn name ' %}?limit=10?q="+seach,
查看完整描述

3 回答

?
Helenr

TA贡献1780条经验 获得超4个赞

在 AJAX 调用之前获取输入的值,而不是在事件侦听器中。


var search = document.getElementById("search").value;

$.ajax({

    dataType: "json",

    url: "{% url 'some urn name' %}?limit=10&q="+encodeURIComponent(search),

    ...

});

此外,您需要使用 分隔多个查询参数&,而不是?。您应该调用encodeURIComponent()以确保搜索字符串在 URL 中正确编码。


查看完整回答
反对 回复 2023-04-27
?
饮歌长啸

TA贡献1951条经验 获得超3个赞

只需做一个条件检查以确保搜索输入有一个值并且在构建 url 之前不是未定义的,这样的事情应该削减它:


function makeApiCall() {

    const searchValue = document.querySelector('#search').value;

    const url = searchValue ? `http://myapi.com?limit=10&q=${searchValue}` : 'http://myapi.com?limit=10';

    

    $.ajax({

      dataType: "json",

      url

    }

  }


查看完整回答
反对 回复 2023-04-27
?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

将 ajax 调用包装在一个将搜索词作为参数的函数中。
如果搜索词不是空白,则将其添加到正确编码的 URL 中,否则将其保留。
第一次调用它时传递一个空字符串。
在按键事件中调用以搜索变量作为参数的函数。

查看完整回答
反对 回复 2023-04-27
  • 3 回答
  • 0 关注
  • 109 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信