jquery ajax 生成查询字符串 if undefined 不通过
jquery ajax generating query string if undefined do not pass
您好,我正在使用 jquery 和 ajax 到 post 并从 CMS API 获取数据。我正在生成一个查询字符串来获取数据:
region = typeof region !== 'undefined' ? 'region='+region : '';
centre = typeof centre !== 'undefined' ? 'centre='+centre : '';
data = region+centre; // generate query string
现在我认为如果未定义,上面的内容不会传递任何内容,但是如果我在控制台日志 data
上单击触发中心变量的按钮,它会传递 region="undefined"centre="Centre Market"
。但是我希望它只传递 centre="Centre Market"
这将是单击按钮的 href。
这是我的点击函数:
$('ul.dropdown li a').click(function (e) {
e.preventDefault();
console.info('Selected Centre: "' + $(this).attr('href') + '"');
var centre = $(this).attr('href');
getData.update('/overview', 'undefined' centre);
});
如您所见,这将 href
属性传递给 getData.update 函数,此函数在下方...
var getData = {
update: function (url, region, centre) {
region = typeof region !== 'undefined' ? 'region='+region : '';
centre = typeof centre !== 'undefined' ? 'centre='+centre : '';
// i dont want to pass region if it is undefined
data = region+centre; // generate query string
console.log(data);
$.ajax({
url: url,
async: true,
dataType: 'json',
data: data, // data passed here
type: 'POST',
success: function (json) {
//success stuff....
}
});
}
}
如您所见,我将数据传递给 ajax 函数:
data = region+centre; // generate query string
因此,如果区域未定义或为空或未通过,我不希望它与查询字符串分开,即不包括 region=
。我有什么想法可以做到这一点吗?
改为检查 null,并添加一个字符串检查(您可以只检查 typeof 字符串):
$('ul.dropdown li a').click(function (e) {
e.preventDefault();
console.info('Selected Centre: "' + $(this).attr('href') + '"');
var centre = $(this).attr('href');
getData.update('/overview', null, centre);
});
如您所见,这会将 href 属性传递给 getData.update 函数,此函数位于下方...
var getData = {
update: function (url, region, centre) {
region = (region != null && typeof region == 'string') ? 'region='+region : '';
centre = typeof centre !== 'undefined' ? 'centre='+centre : '';
// i dont want to pass region if it is undefined
data = region+centre; // generate query string
console.log(data);
$.ajax({
url: url,
async: true,
dataType: 'json',
data: data, // data passed here
type: 'POST',
success: function (json) {
//success stuff....
}
});
}
}
您好,我正在使用 jquery 和 ajax 到 post 并从 CMS API 获取数据。我正在生成一个查询字符串来获取数据:
region = typeof region !== 'undefined' ? 'region='+region : '';
centre = typeof centre !== 'undefined' ? 'centre='+centre : '';
data = region+centre; // generate query string
现在我认为如果未定义,上面的内容不会传递任何内容,但是如果我在控制台日志 data
上单击触发中心变量的按钮,它会传递 region="undefined"centre="Centre Market"
。但是我希望它只传递 centre="Centre Market"
这将是单击按钮的 href。
这是我的点击函数:
$('ul.dropdown li a').click(function (e) {
e.preventDefault();
console.info('Selected Centre: "' + $(this).attr('href') + '"');
var centre = $(this).attr('href');
getData.update('/overview', 'undefined' centre);
});
如您所见,这将 href
属性传递给 getData.update 函数,此函数在下方...
var getData = {
update: function (url, region, centre) {
region = typeof region !== 'undefined' ? 'region='+region : '';
centre = typeof centre !== 'undefined' ? 'centre='+centre : '';
// i dont want to pass region if it is undefined
data = region+centre; // generate query string
console.log(data);
$.ajax({
url: url,
async: true,
dataType: 'json',
data: data, // data passed here
type: 'POST',
success: function (json) {
//success stuff....
}
});
}
}
如您所见,我将数据传递给 ajax 函数:
data = region+centre; // generate query string
因此,如果区域未定义或为空或未通过,我不希望它与查询字符串分开,即不包括 region=
。我有什么想法可以做到这一点吗?
改为检查 null,并添加一个字符串检查(您可以只检查 typeof 字符串):
$('ul.dropdown li a').click(function (e) {
e.preventDefault();
console.info('Selected Centre: "' + $(this).attr('href') + '"');
var centre = $(this).attr('href');
getData.update('/overview', null, centre);
});
如您所见,这会将 href 属性传递给 getData.update 函数,此函数位于下方...
var getData = {
update: function (url, region, centre) {
region = (region != null && typeof region == 'string') ? 'region='+region : '';
centre = typeof centre !== 'undefined' ? 'centre='+centre : '';
// i dont want to pass region if it is undefined
data = region+centre; // generate query string
console.log(data);
$.ajax({
url: url,
async: true,
dataType: 'json',
data: data, // data passed here
type: 'POST',
success: function (json) {
//success stuff....
}
});
}
}