Ajax在第二次调用时没有返回成功或错误

时间:2014-05-05 21:29:21

标签: javascript jquery ajax json printing

我有"打印"调用ajax的按钮获取并在新窗口中打开页面进行打印。

<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);

我第一次点击&#34;打印&#34;按钮,它工作正常。它确实ajax get和control转到action方法并返回成功,然后它返回查看并进入成功函数并打开新窗口,

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

1 个答案:

答案 0 :(得分:0)

你解决了吗?我建议您将缓存设置为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;

}