如果选择了下拉列表中的特定值,GAE 任务队列将不会继续
GAE Task queue wont continue if specific value in dropdown selected
我有一个表单,提交时将数据传递给 taskqueue.php,然后将值传递给 process.php。
这是导致问题的下拉菜单:
<select id="year" name='year'>
<option value="0">Year End...*</option>
<option value="2013">2013</option>
<option value="2014">2014</option>
<option value="2015">2015</option>
</select>
如果我 select 2015,没有问题,它将继续 taskqueue.php 然后 processing.php 并执行任务。如果我 select 2014 或 2013,那么我会得到一个空白页面,其中 url 看起来像是卡在了 taskqueue.php。
如果我将下拉列表的所有“值”更改为 2015,那么它将继续处理任务,例如
<option value="2015">2013</option>
<option value="2015">2014</option>
<option value="2015">2015</option>
如果我更改下拉标签,没有问题,似乎只是值本身。
我确实有 javascript hides/shows 下拉菜单,但我看不到任何具体引用 2014/2013 的地方。
见下面的代码
表格:
<script type="text/javascript" language="javascript">
function display_Field(e){
document.getElementById('month').style.display = "none";
document.getElementById('quarter').style.display = "none";
document.getElementById('year').style.display = "none";
periodend=document.getElementById('periodend').value;
if (periodend === 'Monthly') {
document.getElementById('year').selectedIndex = 0;
document.getElementById('month').style.display = "inline";
document.getElementById('year').style.display = "inline";
document.getElementById('quarter').selectedIndex = 0;
}
if(periodend === 'Quarterly') {
document.getElementById('year').selectedIndex = 0;
document.getElementById('quarter').style.display = "inline";
document.getElementById('year').style.display = "inline";
document.getElementById('month').selectedIndex = 0;
}
if (periodend === 'Yearly'){
document.getElementById('year').selectedIndex = 0;
document.getElementById('year').style.display = "inline";
document.getElementById('month').selectedIndex = 0;
document.getElementById('quarter').selectedIndex = 0;
}
}
function validate() {
periodend=document.getElementById('periodend').value;
month=document.getElementById('month').value;
quarter=document.getElementById('quarter').value;
year=document.getElementById('year').value;
if (periodend==='0'||(periodend==='Monthly' && (month==='0'||year==='0'))||(periodend==='Quarterly' && (quarter==='0'||year==='0'))||(periodend==='Yearly' && year==='0')) {
valid_alert='';
if (periodend==='0') {
valid_alert='Please select a period end\n';
}
if (periodend==='Monthly' && (month==='0'||year==='0')) {
if (month==='0') {
valid_alert=valid_alert+'Please select a month end\n';
}
if (year==='0') {
valid_alert=valid_alert+'Please select a year\n';
}
}
if (periodend==='Quarterly' && (quarter==='0'||year==='0')) {
if (quarter==='0') {
valid_alert=valid_alert+'Please select a quarter end\n';
}
if (year==='0') {
valid_alert=valid_alert+'Please select a year\n';
}
}
if (periodend==='Yearly' && year==='0') {
valid_alert=valid_alert+'Please select a year\n';
}
alert(valid_alert);
return false;
} else {
return true;
}
}
</script>
<?php
<form id="report-form" name="report-form" action="/taskqueue.php" method="post" style="margin-bottom:40px;">
<select id="periodend" name="periodend" class="inline" onChange="display_Field(this.selectedIndex);">
<option value="0">Period Ended...*</option>
<option value="Monthly">Monthly</option>
<option value="Quarterly">Quarterly</option>
<option value="Yearly">Yearly</option>
</select>
<select id="month" name='month'>
<option value="0">Month End...*</option>
<option value="January">January</option>
<option value="February">February</option>
<option value="March">March</option>
<option value="April">April</option>
<option value="May">May</option>
<option value="June">June</option>
<option value="July">July</option>
<option value="August">August</option>
<option value="September">September</option>
<option value="October">October</option>
<option value="November">November</option>
<option value="December">December</option>
</select>
<select id="quarter" name='quarter'>
<option value="0">Quarter End...*</option>
<option value="30 September">30 September</option>
<option value="31 December">31 December</option>
<option value="31 March">31 March</option>
<option value="30 June">30 June</option>
</select>
<select id="year" name='year'>
<option value="0">Year End...*</option>
<option value="2013">2013</option>
<option value="2014">2014</option>
<option value="2015">2015</option>
</select>
<input type="submit" id="save-submit" name="save-submit" value="Save & Setup Another" onClick="return validate();"></form>
>?
TASKQUEUE.PHP
<?php
require_once 'google/appengine/api/taskqueue/PushTask.php';
use google\appengine\api\taskqueue\PushTask;
$name=$current_user->businessname;
$staff_member=$current_user->user_firstname." ".$current_user->user_lastname;
$staff_email=$user_email;
$client_name=stripslashes($_POST['search']);
$periodend=$_POST['periodend'];
$month=$_POST['month'];
$quarter=$_POST['quarter'];
$year=$_POST['year'];
$comments=$_POST['comments'];
$setupanother=$_POST['save-submit'];
$submit=$_POST['submit'];
if($_POST['save-submit'] || $_POST['submit']){
$wp_task = new PushTask('/process.php', ['name' => $name
, 'staff_member' => $staff_member
, 'client_name' => $client_name
, 'staff_email' => $staff_email
, 'periodend' => $periodend
, 'month' => $month
, 'quarter' => $quarter
, 'year' => $year
, 'comments' => $comments
, 'save-submit' => $setupanother
, 'submit' => $submit
]);
$task_name = $wp_task->add();
}
header("Location: /<another page>");
?>
您看到任何可能成为问题的地方吗?提前致谢,对于这个冗长的问题深表歉意,必须确保我包含了所有内容!
看来我忽略了一个事实,即我的 style.css 中还有另一个 ID 'year'。所以我所做的只是将代码中的 'year'
更改为 'yearend'
编辑:
因此将其更改为 'yearend',允许代码循环回到原始页面,例如header("Location: /<another page>");
不再提供空白页,但仍然不会在后台处理任务,除非它是“2015”。只是坐在任务队列中。
找到了!
我的 taskqueue.php 和 processing.php 中的 $year
变量是问题所在。将其更改为 $yearend
并且似乎有效。希望就此结束!
我有一个表单,提交时将数据传递给 taskqueue.php,然后将值传递给 process.php。
这是导致问题的下拉菜单:
<select id="year" name='year'>
<option value="0">Year End...*</option>
<option value="2013">2013</option>
<option value="2014">2014</option>
<option value="2015">2015</option>
</select>
如果我 select 2015,没有问题,它将继续 taskqueue.php 然后 processing.php 并执行任务。如果我 select 2014 或 2013,那么我会得到一个空白页面,其中 url 看起来像是卡在了 taskqueue.php。
如果我将下拉列表的所有“值”更改为 2015,那么它将继续处理任务,例如
<option value="2015">2013</option>
<option value="2015">2014</option>
<option value="2015">2015</option>
如果我更改下拉标签,没有问题,似乎只是值本身。
我确实有 javascript hides/shows 下拉菜单,但我看不到任何具体引用 2014/2013 的地方。
见下面的代码 表格:
<script type="text/javascript" language="javascript">
function display_Field(e){
document.getElementById('month').style.display = "none";
document.getElementById('quarter').style.display = "none";
document.getElementById('year').style.display = "none";
periodend=document.getElementById('periodend').value;
if (periodend === 'Monthly') {
document.getElementById('year').selectedIndex = 0;
document.getElementById('month').style.display = "inline";
document.getElementById('year').style.display = "inline";
document.getElementById('quarter').selectedIndex = 0;
}
if(periodend === 'Quarterly') {
document.getElementById('year').selectedIndex = 0;
document.getElementById('quarter').style.display = "inline";
document.getElementById('year').style.display = "inline";
document.getElementById('month').selectedIndex = 0;
}
if (periodend === 'Yearly'){
document.getElementById('year').selectedIndex = 0;
document.getElementById('year').style.display = "inline";
document.getElementById('month').selectedIndex = 0;
document.getElementById('quarter').selectedIndex = 0;
}
}
function validate() {
periodend=document.getElementById('periodend').value;
month=document.getElementById('month').value;
quarter=document.getElementById('quarter').value;
year=document.getElementById('year').value;
if (periodend==='0'||(periodend==='Monthly' && (month==='0'||year==='0'))||(periodend==='Quarterly' && (quarter==='0'||year==='0'))||(periodend==='Yearly' && year==='0')) {
valid_alert='';
if (periodend==='0') {
valid_alert='Please select a period end\n';
}
if (periodend==='Monthly' && (month==='0'||year==='0')) {
if (month==='0') {
valid_alert=valid_alert+'Please select a month end\n';
}
if (year==='0') {
valid_alert=valid_alert+'Please select a year\n';
}
}
if (periodend==='Quarterly' && (quarter==='0'||year==='0')) {
if (quarter==='0') {
valid_alert=valid_alert+'Please select a quarter end\n';
}
if (year==='0') {
valid_alert=valid_alert+'Please select a year\n';
}
}
if (periodend==='Yearly' && year==='0') {
valid_alert=valid_alert+'Please select a year\n';
}
alert(valid_alert);
return false;
} else {
return true;
}
}
</script>
<?php
<form id="report-form" name="report-form" action="/taskqueue.php" method="post" style="margin-bottom:40px;">
<select id="periodend" name="periodend" class="inline" onChange="display_Field(this.selectedIndex);">
<option value="0">Period Ended...*</option>
<option value="Monthly">Monthly</option>
<option value="Quarterly">Quarterly</option>
<option value="Yearly">Yearly</option>
</select>
<select id="month" name='month'>
<option value="0">Month End...*</option>
<option value="January">January</option>
<option value="February">February</option>
<option value="March">March</option>
<option value="April">April</option>
<option value="May">May</option>
<option value="June">June</option>
<option value="July">July</option>
<option value="August">August</option>
<option value="September">September</option>
<option value="October">October</option>
<option value="November">November</option>
<option value="December">December</option>
</select>
<select id="quarter" name='quarter'>
<option value="0">Quarter End...*</option>
<option value="30 September">30 September</option>
<option value="31 December">31 December</option>
<option value="31 March">31 March</option>
<option value="30 June">30 June</option>
</select>
<select id="year" name='year'>
<option value="0">Year End...*</option>
<option value="2013">2013</option>
<option value="2014">2014</option>
<option value="2015">2015</option>
</select>
<input type="submit" id="save-submit" name="save-submit" value="Save & Setup Another" onClick="return validate();"></form>
>?
TASKQUEUE.PHP
<?php
require_once 'google/appengine/api/taskqueue/PushTask.php';
use google\appengine\api\taskqueue\PushTask;
$name=$current_user->businessname;
$staff_member=$current_user->user_firstname." ".$current_user->user_lastname;
$staff_email=$user_email;
$client_name=stripslashes($_POST['search']);
$periodend=$_POST['periodend'];
$month=$_POST['month'];
$quarter=$_POST['quarter'];
$year=$_POST['year'];
$comments=$_POST['comments'];
$setupanother=$_POST['save-submit'];
$submit=$_POST['submit'];
if($_POST['save-submit'] || $_POST['submit']){
$wp_task = new PushTask('/process.php', ['name' => $name
, 'staff_member' => $staff_member
, 'client_name' => $client_name
, 'staff_email' => $staff_email
, 'periodend' => $periodend
, 'month' => $month
, 'quarter' => $quarter
, 'year' => $year
, 'comments' => $comments
, 'save-submit' => $setupanother
, 'submit' => $submit
]);
$task_name = $wp_task->add();
}
header("Location: /<another page>");
?>
您看到任何可能成为问题的地方吗?提前致谢,对于这个冗长的问题深表歉意,必须确保我包含了所有内容!
看来我忽略了一个事实,即我的 style.css 中还有另一个 ID 'year'。所以我所做的只是将代码中的 'year'
更改为 'yearend'
编辑:
因此将其更改为 'yearend',允许代码循环回到原始页面,例如header("Location: /<another page>");
不再提供空白页,但仍然不会在后台处理任务,除非它是“2015”。只是坐在任务队列中。
找到了!
我的 taskqueue.php 和 processing.php 中的 $year
变量是问题所在。将其更改为 $yearend
并且似乎有效。希望就此结束!