我找到了一些能够让我获取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){
}
});
}
});
因此,如果我没有为URL提供查询someID,那么它不应该执行Ajax调用。现在控制台日志输出未定义,正如我所料。但是,出于某种原因,它仍然会触发Ajax请求,即使我有条件可以阻止这种情况发生。
如果QueryURL.someID
未定义,为什么还会发出ajax请求?
由于
答案 0 :(得分:1)
"undefined"
是一个字符串,您需要与变量undefined
进行比较
if(QueryURL.someID !== undefined) {
//ajax call
}
来自MDN:
全局undefined属性表示未定义的原始值。它是JavaScript的原始类型之一。