我的表单在 php.ini 中定义的表单中存在潜在错误。我使用 javascript 根据是否存在错误来更改表单操作。我已经使用 json_encode 转换了 php 错误变量 $errors,这样我就可以在 javascript 中使用它。在 Firefox 中运行该文件,我在 Firebug 中收到以下错误:
Syntax error: missing ;
在语句varErrors = "{"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 可以提供的任何帮助。
最佳答案
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); ?>;
关于JavaScript 语法错误,缺少 ";",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23434429/