将php输出到javascript时出现语法错误

时间:2016-04-28 22:16:38

标签: javascript php jquery ajax

这是有效的,毕竟这是一个语法错误,但我想知道如何做到这一点,以便语法是正确的。

下面的代码是准备要在Ajax调用上发送的变量的脚本的一部分,因此根据范围,相应的变量应该传递给Ajax。

问题,从javascript角度来看,似乎只定义了每个范围的php变量。

我认为如果不满足else条件,它将不会尝试解析,但显然情况并非如此。始终定义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) ;?>;}

1 个答案:

答案 0 :(得分:1)

从代码的外观来看,您要从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条件更适合您的需求。