2014-09-21 80 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]; 
     } 
    } 
}​