javascript语法错误,缺少“;”

时间:2014-05-02 18:12:40

标签: javascript php json

我在php中定义的表单中有一个潜在错误的表单。我使用javascript来改变表单操作,具体取决于是否存在错误。我已经使用json_encode转换了php错误变量,$ errors,所以我可以在javascript中使用它。在Firefox中运行该文件我在Firebug中收到以下错误:

  

语法错误:缺失;

在语句var errors = "{"firstnameErr:......etc}之前,指针位于firstnameErr中的字母f处。看起来我在json_encode对象中有错误。

这是javascript:

 <script type = "text/javascript">
    function switchFormAction() { 
    var errors = [];                               
    var errors = "<?php echo json_encode($errors); ?>";
    if(!empty(errors)) {
    alert("Please correct these errors");
    }                                        
    else    {
    var element = document.getElementById("regForm");
    element.setAttribute("action", "serraInsertForm.php");
    return true;
    }
    }
    window.onload = function() {
    document.getElementById("regForm").onsubmit = function()
    switchFormAction();
    }
</script>  

可能简单但我无法解决。 Javascript和json对我来说都是新手。 感谢stackoverflow可以提供的任何帮助。

2 个答案:

答案 0 :(得分:5)

var errors = "<?php echo json_encode($errors); ?>";
             ^---                                ^--

指示的引号不是必需的,实际上是导致问题的原因。 json_encode()将生成将$errors中的数据转换为语法上有效的Javascript所需的任何引号/括号。你正在制作:

var errors = "{"somekey":"somevalue"}";
             ^--start string
               ^--end string
                ^^^^^^^ undefined variable

你需要的只是

var errors = <?php echo json_encode($errors); ?>;

答案 1 :(得分:1)

在这里丢失报价应该这样做。

var errors = "<?php echo json_encode($errors); ?>";

应该是:

var errors = <?php echo json_encode($errors); ?>;