javascript - 忽略 Jquery 中的 Null 结果

标签 javascript jquery function null local-storage

我有一个使用导航器本地存储值的脚本,并且我开发了一个向我发送值的网络服务,这里唯一的问题是我不需要它向我发送空结果,这是函数:

 function SendNeedHelpLinkTrace() {

    var pLinkVirement = sessionStorage.getItem("pClickVirement");
    var pLinkCarteBancaire = sessionStorage.getItem("pLinkCarteBancaire");
    var pLinkRechargePaiementFactureTelecom = sessionStorage.getItem("pLinkRechargePaiementFactureTelecom");
    var pPaiementVignetteImpotTaxe = sessionStorage.getItem("PaiementVignetteImpotTaxe");
    var pLinkPaiementFactureEauElectricite = sessionStorage.getItem("pPaiementFactureEauElectricite");
    var pLinkServiceFatourati = sessionStorage.getItem("pCatchLinkServiceFatourati");
    var pLinkCihExpress = sessionStorage.getItem("pCatchLinkCihExpress");
    var pLinkEdocuments = sessionStorage.getItem("pCatchLinkEdocuments");


    var lChannelId = "01";
    var lServiceId = "900120";
    var lClientId = document.getElementById('<%= HiddenClientId.ClientID%>').value;

    alert(lClientId);
    var lData;
    var lCollect;

    console.log(lClientId);

        lData = pLinkVirement + " | " + pLinkCarteBancaire + " | " + pLinkRechargePaiementFactureTelecom + " | " + pPaiementVignetteImpotTaxe + " | " + pLinkPaiementFactureEauElectricite + " | " + pLinkServiceFatourati + " | " + pLinkCihExpress + " | " + pLinkEdocuments;

        console.log(lData);

        alert(lData);

        lDataCollected = lClientId + ";" + lChannelId + ";" + lServiceId + ";" + lData;

        console.log(lDataCollected);


        $.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            url: "http://localhost:9097/CatchEvent.asmx/CollectData",
            data: JSON.stringify({ "pData": lDataCollected }),
            dataType: "json",
            async: true,
            success: function (data, textStatus) {
                if (textStatus == "success") {
                    alert('success');
                }
            },
            error: function (exception) {
                alert('Exeption : ' + exception);
            }
        });
        sessionStorage.clear();

    }

结果是这样的:

空|| 300123 || 900452 ||空||空|| 26332

我应该怎么做才能不显示空结果?

最佳答案

鉴于 lDataCollected 是一个字符串,您可以使用 split() 将其转换为数组轻松制作filter()从数组中排除“Null”值,最后 join()再次创建一个字符串:

var lDataCollected = 'Null || 300123 || 900452 || Null || Null || 26332';
var result = lDataCollected
  .split(' || ')
  .filter(function(item) {
    return item !== 'Null';
  })
  .join(' || ');

console.log(result);

最终的解决方案:

function SendNeedHelpLinkTrace() {
    var pLinkVirement = sessionStorage.getItem('pClickVirement'),
        pLinkCarteBancaire = sessionStorage.getItem('pLinkCarteBancaire'),
        pLinkRechargePaiementFactureTelecom = sessionStorage.getItem('pLinkRechargePaiementFactureTelecom'),
        pPaiementVignetteImpotTaxe = sessionStorage.getItem('PaiementVignetteImpotTaxe'),
        pLinkPaiementFactureEauElectricite = sessionStorage.getItem('pPaiementFactureEauElectricite'),
        pLinkServiceFatourati = sessionStorage.getItem('pCatchLinkServiceFatourati'),
        pLinkCihExpress = sessionStorage.getItem('pCatchLinkCihExpress'),
        pLinkEdocuments = sessionStorage.getItem('pCatchLinkEdocuments'),

        lChannelId = '01',
        lServiceId = '900120',
        lClientId = document.getElementById('<%= HiddenClientId.ClientID%>').value,
        lData = pLinkVirement + ' | ' + pLinkCarteBancaire + ' | ' + pLinkRechargePaiementFactureTelecom + ' | ' + pPaiementVignetteImpotTaxe + ' | ' + pLinkPaiementFactureEauElectricite + ' | ' + pLinkServiceFatourati + ' | ' + pLinkCihExpress + ' | ' + pLinkEdocuments,
        lDataCollectedString = lClientId + ';' + lChannelId + ';' + lServiceId + ';' + lData,
        getLDataCollected = function(str) {
            var str
                .split(' || ')
                .filter(function(item) {
                    return item !== 'Null';
                })
                .join(' || ');
        };

    $.ajax({
        type: 'POST',
        contentType: 'application/json; charset=utf-8',
        url: 'http://localhost:9097/CatchEvent.asmx/CollectData',
        data: JSON.stringify({
            'pData': getLDataCollected(lDataCollectedString)
        }),
        dataType: 'json',
        async: true,
        success: function(data, textStatus) {
            if (textStatus === 'success') {
                alert('success');
            }
        },
        error: function(exception) {
            alert('Exeption:' + exception);
        }
    });

    sessionStorage.clear();
}

关于javascript - 忽略 Jquery 中的 Null 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39486081/

相关文章:

javascript - 拒绝显示框架,因为它在 android webview 中将 X-Frame-Options 设置为 'DENY

javascript - 如何从 Angular 2 应用程序中的 http json 响应保存访问 token ?

JavaScript 检查值是否存在然后提交表单

javascript - 在 jQuery 中查找/替换 HTML 标签之间的字符串?

javascript - 窗口中主机和主机名之间的区别

javascript - RequireJS - 调用模块内的另一个属性。

javascript - 是否可以从查看源页面上的 Chrome 扩展程序运行内容脚本?

jquery - Bootstrap 双列表框和单选,在警报中使用 jquery 中的添加/删除/关闭选项获取值

javascript - 函数与变量之比的原因是什么?

c - 如何将 "return"数组从函数到 c 中的 main