单击Javascript - 功能的两个部分,但一次只能运行一个

时间:2016-02-04 19:59:51

标签: javascript php jquery

我有两个服务器端PHP脚本: 1:/addit.php - 根据给定的当前ID在服务器上创建pdf文件 2:/viewit.php - 将pdf文件下载到浏览器窗口。

这两个脚本都运行良好顺便说一句。 但是,我想组合一个onclick函数来运行“addit.php”,然后通过打开文件“view.php”来查看该文件。 所以我使用原始代码创建文件ok然后添加一个window.location但它们不能一起工作。如果我删除window.location,代码的第一部分工作正常,如果我包含它,第一部分停止工作,只有window.location工作。

抱歉愚蠢,谢谢。

function download_invoice() {
    $(document).on('click','.downloadit',function(id){
        var current_element = $(this);
        var id = $(this).attr('id');
        var ida = $(this).attr('id')+"A";
        var idicon = $(this).attr('id')+"icon";

        $.post('myaddress/addit.php',
           { list_entry_id: id },
            $("#infobox_data_button2").fadeTo(1001,.33)
        );
    });

    window.location="myaddress/viewit.php";
};

2 个答案:

答案 0 :(得分:3)

您应该将window.location="myaddress/viewit.php";移至ajax回调,如下所示。否则它会在您收到服务器响应之前触发。

$.post('myaddress/addit.php',
     { list_entry_id: id },
     function() {
        $("#infobox_data_button2").fadeTo(1001,.33);
        window.location="myaddress/viewit.php";
     }
);

答案 1 :(得分:2)

window.location不在事件中。当您将ajax(异步)运行到'myaddress / addit.php'时,将发生重定向,从而终止进程。

您需要将window.location置于成功回调中,因此在事件中。

function download_invoice() {
    $(document).on('click','.downloadit',function(id){
        var current_element = $(this);
        var id = $(this).attr('id');
        var ida = $(this).attr('id')+"A";
        var idicon = $(this).attr('id')+"icon";

        $.post('myaddress/addit.php', { list_entry_id: id }, function(data){
            $("#infobox_data_button2").fadeTo(1001,.33);
          
            // Here!
            window.location="myaddress/viewit.php";
        });
    });
    // Abandoned
    //window.location="myaddress/viewit.php";
};