【问题标题】:Call Ajax Function Based on URL基于 URL 调用 Ajax 函数
【发布时间】:2014-09-21 15:36:23
【问题描述】:

我正在使用 jquery ajax 来搜索使用第三方 api 的东西。一旦它找到东西,它就会将一堆数据返回到屏幕上。我要做的是根据 URL 调用 search 函数,我不熟悉使用 Ajax 处理动态 URL。

例如,如果我通过按钮搜索 shoes,则 URL 应更改为 localhost/search=shoes。但是,如果我实际上在地址栏中键入了相同的 URL,它应该调用 search 函数并查询 shoes

谁能指出我如何处理这个问题的正确方向?

var search = function( query ){
    $.ajax({
        url: 'ajax base url' + query,
        data: {
            q: query,
            // etc
        },
    }).done( function(){
      console.log('Do something with data');
    });
};

$('.btn-search').on('click', function(e){
        e.preventDefault();

        var data = $(this).text();
        search( data );
});

【问题讨论】:

  • 很难理解你想要什么:AJAX URL 是任意有效的 URL,但它必须与加载 JS 的服务器位于同一服务器上(“同源策略”)。对外部服务器上的远程 api 发出任何内容都会导致浏览器出现异常。

标签: javascript jquery ajax


【解决方案1】:

你可以用正则表达式检查字符串是完整的url还是只是查询,最简单的例子可以使用这个正则表达式:localhost\/search=(.*)

要使用这个正则表达式,你应该使用String.match 函数

之后你应该调用函数取决于switch语句的查询

【讨论】:

    【解决方案2】:

    你可以简单地设置网址

    window.location = "localhost?search=shoes";
    

    如果您访问此页面,您可以使用 GetURLParameter 辅助函数检查 document.ready 中的 URL 获取参数

    $( document ).ready(function() {
        var search = GetURLParameter("search");
    
        if(search){
    
          console.log('Do something with data');
        }
    });
    
    function GetURLParameter(sParam)
    {
        var sPageURL = window.location.search.substring(1);
        var sURLVariables = sPageURL.split('&');
        for (var i = 0; i < sURLVariables.length; i++) 
        {
            var sParameterName = sURLVariables[i].split('=');
            if (sParameterName[0] == sParam) 
            {
                return sParameterName[1];
            }
        }
    }​
    

    【讨论】:

      猜你喜欢
      • 2015-12-20
      • 2019-06-01
      • 2018-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-30
      • 1970-01-01
      相关资源
      最近更新 更多