【问题标题】:jquery ajax generating query string if undefined do not pass如果未定义不通过 jquery ajax 生成查询字符串
【发布时间】:2015-03-21 22:00:03
【问题描述】:

您好,我正在使用 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=。有什么想法可以做到这一点吗?

【问题讨论】:

    标签: javascript jquery ajax query-string


    【解决方案1】:

    改为检查 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....
           }
        });
    }
    

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-21
      • 1970-01-01
      • 2011-11-16
      • 2015-02-09
      相关资源
      最近更新 更多