【问题标题】:Ajax get not returning to success or error on second get callAjax 在第二次调用时不会返回成功或错误
【发布时间】:2014-05-05 21:29:20
【问题描述】:

我有“打印”按钮,它调用 ajax get 并在新窗口中打开页面进行打印。

<button type="button"  onclick="getPrint(event , 'Id')">Print</button>

 function getPrint(e, Id) {        
        var url = '/PrintController/Print/' + "?Id=" + id;

        $.ajax({
            url: url,
            async: false,
            success: function (data) {
                if (data.success == true) {
                    var mywindow = window.open('', 'Print', 'height=500,width=600,menubar=yes');
                    mywindow.document.write('<html><head><title></title>');
                    mywindow.document.write('</head><body >');
                    mywindow.document.write($('<div></div>').append(data.viewBody).clone().html());
                    mywindow.document.write('</body></html>');
                    mywindow.focus();
                    mywindow.print();
                    mywindow.close();
                }
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                alert(textStatus);
            }
        });
        return;
}

控制器返回如下:-

return Json(new { success = true, viewBody = viewPrintSub }, JsonRequestBehavior.AllowGet);

我第一次单击“打印”按钮时,它工作正常。它执行 ajax 获取和控制转到 action 方法并返回成功,然后返回查看并进入成功函数并打开新窗口,

但是在第二次点击时,它会转到控制器操作方法,然后返回成功,然后这一次它根本不会成功或出错。

【问题讨论】:

  • 您在浏览器控制台中查看请求/响应吗?
  • 为什么不直接将 URL 传递给 window.open,而不使用 AJAX?你只需要去掉&lt;head&gt;吗?
  • 尝试将return;更改为return false;
  • 我建议您在成功处理程序的开头添加console.log(data.success)。在您的代码中,如果 data.success 不是 true,则您的代码什么也不做。
  • 它确实返回 {"success":true,"viewBody":"\r\n\u....在我检查浏览器控制台时响应。它第一次工作,但没有第二次点击打印按钮。第二次,尽管我在浏览器响应中看到了 true,但如果(data.success == true),控件永远不会进入内部。..

标签: javascript jquery ajax json printing


【解决方案1】:

你解决了吗?我建议您将缓存设置为 false,当然还要确保浏览器不会阻止网站打开多个窗口。

function getPrint(e, Id) {        
    var url = '/PrintController/Print/' + "?Id=" + id;

    $.ajax({
        cache: false, // Do not cache
        url: url,
        async: false,
        success: function (data) {
            if (data.success == true) {
                var mywindow = window.open('', 'Print', 'height=500,width=600,menubar=yes');
                mywindow.document.write('<html><head><title></title>');
                mywindow.document.write('</head><body >');
                mywindow.document.write($('<div></div>').append(data.viewBody).clone().html());
                mywindow.document.write('</body></html>');
                mywindow.focus();
                mywindow.print();
                mywindow.close();
            }
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            alert(textStatus);
        }
    });
    return;

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-19
    • 2016-05-25
    • 1970-01-01
    相关资源
    最近更新 更多