我正在尝试很长时间:
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
,而不会得到如上所示的回显副本吗?
我希望我对帖子足够清楚,我尽可能多地解释。请问是否仍然不够清楚。
答案 0 :(得分:0)
这是因为执行了两次“executedJobs.php”文件。 一旦调用ajax调用,即执行ajax调用的urlJobs.php 另一种是在ajax调用的成功函数调用中提交表单。
所以,你收到两组输出。
如果在localstorage中使用HTML5,您可以尝试将结果保存在Cookie中。 并在页面加载时访问该数据到其他页面。 如果你想采用相同的方法,那么你可以使用两个不同的文件进行ajax调用和表单提交。