如何从JavaScript函数重建URL?

时间:2014-03-29 20:07:04

标签: javascript url window.location

我正在尝试重建链接到URL文件的CSV。现在,该链接调用名为downloadCsv()的JavaScript函数。链接如下所示:

<a href="javascript:downloadCsv()">

该功能如下所示:

function downloadCsv() {
    window.location = urlMap.createReportingUrl('entitiesSummaryJson', {
        csv: true,
        "metrics": metricsForTables
    }, 'entityId');
}

上面的urlMap变量如下所示:

var urlMap = {
    params: {
        appSpotOrAppCircleData: '2',
        intervalCut: '30Days',
        entityId: '0',
        entityType: 'advertiserOverview',
        zoom: 'd'
    },

    toUrl : function(params) {
        var paramValues = [];
        $.each(params, function(key, value) {
           paramValues.push(key + '=' + value);
        });
        return '.do?' + paramValues.join('&');
    },

    createReportingUrl : function(baseUrl, fieldToAdd, fieldToRemove) {
        var params = $.extend({}, urlMap.params, fieldToAdd);
        delete params[fieldToRemove];
        return adjustAppSpotUrl(baseUrl + urlMap.toUrl(params));
    }
};

baseUrl看起来像这样:

https://dev.flurry.com/advertisersReportingEntities.do?zoom=d&intervalCut=30Days&entityType=advertiserOverview&appSporOrAppCircleData=2

我不知道JavaScript所以我被困在这里 - 有没有办法从上面的信息重建URL?我正在尝试定义一组逻辑,可以从HTML获取信息,并通过指向下载URL并写入文件自动下载CSV。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:-1)

我认为你应该使用像

这样的东西
window.open(strUrl)

重建网址后

所以看起来应该是这样的:

<a href="Your ULR if JS is disabled" target="_blank" onclick="downloadCsv();return false">my link</a>

function downloadCsv() {
    var params = "menubar=yes,location=yes,resizable=yes,scrollbars=yes,status=yes";
    var url = urlMap.createReportingUrl('entitiesSummaryJson', {
        csv: true,
        "metrics": metricsForTables
    }, 'entityId');
    window.open(url, "My JSON", params);//open URL in new tab in browser
}

试试吧。它应该工作。

所以,不要使用协议“javascript:”。它已经过时,如果在客户端禁用JavaScript,它将无法正常工作。

如果你不仅想要一个打开的文件,而是把它放在硬盘上,实际上如果不与用户交互就不可能。它可能是恶意软件,浏览器不允许在没有对话框的情况下执行此操作。要在客户端上显示对话框,请尝试使用特殊标题:

'Content-Type: application/force-download'.