我有一个表单,它将输入发布到php脚本(通过ajax)onChange,脚本通过将变量设置为true或false(基于一些评估)来响应。然后,当提交原始页面上的表单时,true/false变量被发送到另一个php脚本。
然而,在IE(9)中,当我提交表单时,我收到一个调试错误,说'eligible' is undefined
。
## PHP (data processor — php script 1)
if ( $disqualified ) echo '<script type="text/javascript">var eligible = false;</script>';
else echo '<script type="text/javascript">var eligible = true;</script>';
## JavaScript
$.ajax({
url: 'pageprocessor.php', // php script 2
type: "POST",
data: ({
key: '<?php echo $key; ?>',
group: '<?php echo $group; ?>',
eligibility: eligible,
// eligible is set by the response from PHP above
// before this is executed (I'm sure of the order).
current_page: page,
cumulative_count: count,
cumulative_total: total,
cumulative_progress: progress
}),
相关的注意事项是,当 (通过PeeHaa的评论使用eligible
被传递到php时,它的值注册为文本,而不是布尔值。有办法解决这个问题吗1
/0
而不是true
/false
)
解决方法:使用php的超全局$_SESSION变量将eligible
的值从一个脚本传输到另一个脚本。
我要做的是类似(未经测试)的事情:
HTML/PHP-
<?php
$eligible = 1;
if ($disqualified) {
$eligible = 0;
}
?>
<form action="pageprocessor.php" data-eligible="<?php echo $eligible; ?>">
<select name="something">
<option value=""></option>
<option value="option1">Option1</option>
</select>
</form>
Javascript
var form = $('form'); // you will need a better (more narrow) selector though
$.ajax({
url: form.attr('action'),
type: "POST",
data: ({
key: '<?php echo $key; ?>',
group: '<?php echo $group; ?>',
eligibility: form.data('eligible'), // you still have to verify this server side!
current_page: page,
cumulative_count: count,
cumulative_total: total,
cumulative_progress: progress
}),