毕竟这是一种语法错误,但是这很有效,但是我想知道如何才能做到这一点,以便语法正确。
下面的代码是脚本的一部分,该脚本正在准备要在Ajax调用中发送的变量,因此,根据范围,应将相应的变量传递给Ajax。
从javascript的角度来看,问题似乎是仅定义了每个作用域的php变量。
我认为如果条件不满足,则根本不会尝试解析,但是显然不是这样。 php变量$ scope总是被定义。
Firebug和Chrome开发者工具均抛出错误:
var scope_var = <br />
<b>Notice</b>: Undefined variable: brand in <b>/Applications/MAMP/htdocs/my_site/my_script.php</b> on line <b>1049</b><br />null;
谢谢
var scope = <?php echo json_encode($scope) ;?>;
if (scope == 'all') {var scope_var = 'all';}
else if (scope == 'brands') {var scope_var = <?php echo json_encode($brand) ;?>;}
else if (scope == 'cities') {var scope_var = <?php echo json_encode($city) ;?>;}
else if (scope == 'models') {var scope_var = <?php echo json_encode($model) ;?>;}
else if (scope == 'prange') {var scope_var = <?php echo json_encode($used_prange_low) . '|' . json_encode($used_prange_high) ;?>;}
最佳答案
从代码的外观来看,您期望从PHP输出到JS的值将作为字符串接收。如果是这种情况,则需要将所有PHP语句都用引号引起来。尝试这个:
var scope = '<?php echo json_encode($scope); ?>';
if (scope == 'all') {
var scope_var = 'all';
} else if (scope == 'brands') {
var scope_var = '<?php echo json_encode($brand); ?>';
} else if (scope == 'cities') {
var scope_var = '<?php echo json_encode($city); ?>';
} else if (scope == 'models') {
var scope_var = '<?php echo json_encode($model); ?>';
} else if (scope == 'prange') {
var scope_var = '<?php echo json_encode($used_prange_low) . ' | ' . json_encode($used_prange_high); ?>';
}
另请注意,
switch
语句可能比多个else if
条件更适合您的需求。