将JavaScript / jQuery变量发布到另一个PHP页面并重定向到该页面

时间:2016-07-04 08:47:58

标签: javascript php jquery ajax

我正在尝试很长时间:

  1. 在客户端执行.js文件(成功)。
  2. 将返回的对象(返回的变量)作为数组传递给另一个php页面,以便进一步使用它们(成功解决问题)。
  3. 1.我能够在客户端使用

    执行没有任何问题

    为jQuery部分准备变量的一些PHP代码,例如jobJSPath[0]

    <script type = "text/javascript" >
     $(document).ready(function() {
            // $jobJSPath[0] holds the path to the job1.js file
            var scriptPath = "<?php echo $jobJSPath[0]; ?>"; 
            $.getScript(scriptPath, function(data, textStatus, jqxhr) {
                // Call the function
                var job = job1();
                console.log(job); // shows all the return parameters from job1() as an Object;
    
               // push the return parameters from the Object into the result array without the labels
                var result = [];
                $.each(job, function(index, value) {
                    //window.alert(index + ": " + value);
                    result.push(value);
                });
    

    对于2.部分我使用Ajax电话

            $.ajax({        
                type: 'POST',
                data: {result : result},
                url: 'executedJobs.php',
                }).done(function(data) {
                    var redirectUrl = "executedJobs.php";
                    var form = $('<form action="' + redirectUrl + '" method="post">' +
                    '<input type="hidden" name="result" value="'+ data +'" />' +
                    '<input type="hidden" name="job_batch_id" value="<?php echo $jobsArray[0];?>" />' +
                    '<input type="hidden" name="job_id" value="<?php echo $jobsArray[1];?>" />' +
                    '<input type="hidden" name="job_name" value="<?php echo $jobsArray[2];?>" />' +
                    '</form>');
                    $('body').append(form);
                    $(form).submit();
                });
            });
        });
    </script>
    

    问题是:

    当我被重定向到得执行的.Jobs.php时,我的所有回声字符串都被发布了2次,有一次没有变量输出后直接输出如下输出:

      

    工作回报 - 参数

         

    作业返回 - 参数   阵列([0] =&GT; ixFm5QjDGZ4PWLC1phPcSZUF4 3Byi23bxr6sd6Hw9JSOpLBEcafkzgfDFcO0jO4DcVCk67aH4aDcqiQYTEdSsGrnufo7MfXronhl1IRL9Luz7Wq8dgZVvON1STUGJKrA26NdWqe1teHQ4hbOWojyzyEC6s8aHs991qZDWbp 54UCUF4w2UV5c2INB1F8usENsFAg4vT8LNAqMzpNiqr Bhp5MC6kSLhlbXLHozsGVdyej63rANnPMWQflpjXtEsmD6Hbu7Ut2efHwPr7u9A9gYjcGPlrtkC2ZDjThKYx6wylRb6YNUHMrb6nNkwhlaMla8iiTPrfEO6v5WSBB7ubuIZreadDd2Gr0p69xJtCdWZkvlisn4MbJsE e0xWf8xjjGNexNPABGbXH29JYgt2iejC9 tuvo6mEFreUapRjGuLnOqCssvKORENrClI34ioTXnpx9BmmMDXn5OLcXcmtPHb0kAVDEJ0ZfnrqX7MGd2z3XFXGYk [1] =&GT; ixFm5QjDGZ4PWLC1phPcSZUF4 3Byi23bxr6sd6Hw9JSOpLBEcafkzgf [2] =&GT; DFcO0jO4DcVCk67aH4aDcqiQYTEdSsGrnufo7MfXronhl1IRL9Luz7Wq8dgZVvON1STUGJKrA26NdWqe1teHQ4hbOWojyzyEC6s8aHs991qZDWbp 54UCUF4w2UV5c2INB1F8usENsFAg4vT8LNAqMzpNiqr Bhp5MC6kSLhlbXLHozsGVdyej63rANnPMWQflpjXtEsmD6Hbu7Ut2efHwPr7u9A9gYjcGPlrtkC2ZDjThKYx6wylRb6YNUHMrb6nNkwhlaMla8iiTPrfEO6v5WSBB7ubuIZreadDd2Gr0p69xJtCdWZkvlisn4MbJsE e0xWf8xjjGNexNPABGbXH29JYgt2iejC9 tuvo6mEFreUapRjGuLnOqCssvKORENrClI34ioTXnpx9BmmMD Xn5OLcXcmtPHb0kAVDEJ0ZfnrqX7MGd2z3XFXGYk)

         

    作业批次ID:作业ID:作业名称

         

    作业批次ID: 1,作业ID: 1和作业名称作业1

    我怀疑发生这种情况是因为Ajax POST调用后跟.done()部分var form =以及$(form).submit()结束。问题是当我在window.location.href = "executedJobs.php?result=" + data+ "";操作中使用.done()而不是var form =后跟$(form).submit()操作时,我得到相同的回复副本和所有传递的数据由于我正在努力避免的?result=" + data+ "";部分,因此会显示在网址中,因此我使用带有type = “hidden”的表单。

    我可以代替整个$.ajax({………..}).done({………..})部分只做这个:

    var redirectUrl = "executedJobs.php";
    var form = $('<form action="' + redirectUrl + '" method="post">' +
                    '<input type="hidden" name="result" value="'+ result +'" />' +
                    '<input type="hidden" name="job_batch_id" value="<?php echo $jobsArray[0];?>" />' +
                    '<input type="hidden" name="job_id" value="<?php echo $jobsArray[1];?>" />' +
                    '<input type="hidden" name="job_name" value="<?php echo $jobsArray[2];?>" />' +
                    '</form>');
    $('body').append(form);
    $(form).submit();
    

    但是我的result array作为string而不是array传递给executedJobs.php

    有人可以帮助我将结果数组从第1点传递到var form =中定义的所有其他数据到executedJobs.php,而不会得到如上所示的回显副本吗?

    我希望我对帖子足够清楚,我尽可能多地解释。请问是否仍然不够清楚。

1 个答案:

答案 0 :(得分:0)

这是因为执行了两次“executedJobs.php”文件。 一旦调用ajax调用,即执行ajax调用的urlJobs.php 另一种是在ajax调用的成功函数调用中提交表单。

所以,你收到两组输出。

如果在localstorage中使用HTML5,您可以尝试将结果保存在Cookie中。 并在页面加载时访问该数据到其他页面。 如果你想采用相同的方法,那么你可以使用两个不同的文件进行ajax调用和表单提交。