【问题标题】:Open the response of POST in a new popup window在新的弹出窗口中打开 POST 的响应
【发布时间】:2014-08-14 17:21:26
【问题描述】:

下面是我用于发布数据的粘贴代码。响应将在新选项卡中打开。

GF.SubmitForm = function (url, params, target) {
    // create form string using array push and join
    var form = ['<form method="POST" action="', url, '" target="', target, '">'];
    for (var key in params)
        form.push('<input type="hidden" name="', key, '" value="', params[key], '"/>');
    form.push('</form>');
    jQuery(form.join('')).appendTo('body')[0].submit();
}

我应该怎么做才能在一个新的弹出窗口中打开这个代码,响应数据。

用下面粘贴的代码替换了上面函数中的最后一行代码,但是没有用

 jQuery(form.join('')).appendTo('body')[0].submit(function () {
        window.open(url,target,"menubar=1,resizable=1,width=350,height=250");
    });

【问题讨论】:

    标签: javascript jquery http-post


    【解决方案1】:

    您将无法使用window.open() 打开带有response from the POST 的新窗口。使用 Ajax 是一种可以帮助您避免对GE.SubmitForm() 的其他调用者产生副作用的选项

    GF.SubmitForm = function (url, params, target) {
            if (target === 'newwindow')
            {
                var paramsString = '';
                for (var key in params)
                    paramsString += key + '=' + params[key] + '&';
                var urlCopy = url;
                jQuery.ajax({
                    cache: false,
                    type: 'post',
                    data: paramsString,
                    dataType: 'html',
                    url: urlCopy
                }).done(function(data){
                    var newWindow = window.open(urlCopy,target,"menubar=1,resizable=1,width=350,height=250");
                    newWindow.document.write(data);
                });
                return;
            }
    
            // create form string using array push and join
            var form = ['<form method="POST" action="', url, '" target="', target, '">'];
            for (var key in params)
                form.push('<input type="hidden" name="', key, '" value="', params[key], '"/>');
            form.push('</form>');
            jQuery(form.join('')).appendTo('body')[0].submit();
    };
    

    请原谅需要为target 值的魔术字符串newwindow。你明白了。您还可以使用布尔值重载该函数以打开新窗口,如果为 false,则调用原始 3-arg 函数,如果为 true,则使用 ajax。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-06
      • 1970-01-01
      • 2010-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-16
      相关资源
      最近更新 更多