jqueryajax生成查询字符串,如果未定义则不通过

jquery ajax generating query string if undefined do not pass

本文关键字:未定义 如果 查询 字符串 jqueryajax      更新时间:2023-09-26

嗨,我正在使用jquery和ajax从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,并添加一个字符串检查(您可以只检查字符串的类型):

$('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....
       }
    });
}

}