2014-09-21 42 views
0

我正在使用jquery ajax搜索使用第三方API的内容。一旦它找到了一些东西,它会返回一堆数据到屏幕上。我想要做的是根据URL调用search函数,并且我不熟悉使用Ajax处理动态URL。基于URL调用Ajax函数

例如,如果我通过按钮搜索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); 
}); 
+0

难以理解你想要什么:一个AJAX URL是任意有效的URL,但它必须与JS已经加载的同一个服务器上(“同源策略”)。在外部服务器上针对远程api发出任何内容都会在浏览器中导致异常。 – 2014-09-21 15:43:27

回答

0

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

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

之后,你应该调用的函数取决于查询与switch声明

0

你可以通过简单

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

如果设置的URL您访问此页面,您可以使用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]; 
     } 
    } 
}​