我在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可以提供的任何帮助。
答案 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); ?>;