2017-02-11 77 views
0

我發現一些代碼,使我獲得URL查詢字符串事件觸發時,它不應該

var QueryURL = function() { 
     var query_url = {}; 
     var query = window.location.search.substring(1); 
     var vars = query.split("&"); 
     for (var i=0;i<vars.length;i++) { 
     var pair = vars[i].split("="); 
     if (typeof query_url[pair[0]] === "undefined") { 
      query_url[pair[0]] = decodeURIComponent(pair[1]); 
     } else if (typeof query_url[pair[0]] === "string") { 
      var arr = [ query_url[pair[0]],decodeURIComponent(pair[1]) ]; 
      query_url[pair[0]] = arr; 
     } else { 
      query_url[pair[0]].push(decodeURIComponent(pair[1])); 
     } 
     } 
     return query_url; 
}(); 

上面的代碼完美的作品。但是我還是不太明白。我正在做以下

$(".search").click(function(e) { 

    console.log(QueryURL.someID); //outputs undefined 

    if(QueryURL.someID !== "undefined") { 
     $.ajax({ 
      url: "someurl", 
      type: "POST", 
      success: function (data) { 
       console.log(data) 
      }, 
      error: function(xhr, ajaxOptions, thrownError){ 
      } 
     }); 
    } 
}); 

因此,如果我不提供帶有查詢someID的URL,那麼它不應該執行Ajax調用。現在控制檯日誌記錄輸出沒有定義,我也期望它。然而,由於某種原因,它仍然是射擊,即使我有應該阻止這種情況發生的條件Ajax請求。

爲什麼它仍然使Ajax請求,如果QueryURL.someID是不確定的?

感謝

回答

1

"undefined"是一個字符串,你需要用變量undefined

if(QueryURL.someID !== undefined) { //ajax call }

比較來自MDN:

全球未定義的屬性未定義代表的原始值。它是JavaScript的基本類型之一。

+0

完美,所以QueryURL返回一個叫做不確定,而不是一個字符串變量? –

+0

'QueryURL'正在返回的對象和'someID'是其性質。如果沒有設置屬性'someID',則返回值undefined。 – barbsan