在下面的脚本中,javascript变量(日期)不显示php变量(字段)的值。 Php变量是我需要传递给另一个页面的信息。
如果我不使用if (isset($_POST['submit']))
并设置$field="something";
那么它就可以了。我做错了什么?
感谢您的帮助
<HTML>
<BODY>
<?php
if (isset($_POST['submit'])) {$field = $_POST['field'];}
?>
<FORM name="filter" METHOD ="POST" ACTION ="">
<select name="filteroptions" onChange="chgAction()">
<option value="" selected="selected">select an option</option>
<option value="Date Range" <?php if(isset($_POST['filteroptions']) && $_POST['filteroptions'] == 'Date Range') echo 'selected= "selected"'; ?>>Date Range</option>
</select>
<input type="text" name="field">
<INPUT TYPE = "submit" name="submit">
</form>
<script>
function chgAction() {
var date = "<?php echo "/log/date.php?id=".$field; ?>";
var form = document.filter;
console.log('chgAction()');
console.log(form.filteroptions.selectedIndex);
switch (form.filteroptions.selectedIndex) {
case 1:
form.action = date;
break;
}
}
</script>
</BODY>
</HTML>
答案 0 :(得分:0)
$ _POST只会在提交数据后包含数据。 并且只有将数据发回到此页面时,您的代码才能正常工作。
因此,如果尚未向此页面提交数据的用户刚刚加载了此页面。然后它将无法正常工作。 $ field将不存在,因为没有post数组值&#34; submit&#34;。
如果用户在此页面或其他页面上,则会将数据发布到此页面&amp;在该帖子数据中包含以下字段:&#39;提交&#39; &安培; &#39;字段&#39;那它就会起作用。
答案 1 :(得分:0)
与此PHP Fiddle一样,如果已经设置并提交了字段,那么您将获得相应日期的日志,如果字段未定义则会报告
<?php
if(isset($_POST['submit'])){
$field = $_POST['field'];
}else{
$field = '';
}
?>
<form name="filter" method="POST" action="">
<select name="filteroptions" onChange="chgAction()">
<option value="" selected="selected">select an option</option>
<option value="Date Range" <?php if(isset($_POST['filteroptions']) && $_POST['filteroptions'] == 'Date Range') echo 'selected= "selected"'; ?>>Date Range</option>
</select>
<input type="text" name="field">
<input type = "submit" name="submit">
</form>
<script>
function chgAction() {
var field = "<?php echo $field; ?>";
if(field != ''){
var date = "/log/date.php?id=" + field;
alert(date);
}
else{
alert('Please select a date range');
}
}
</script>