如何将选项从PHP传递到Javascript?
我使用BootstrapValidator作为验证组件。我需要给出从PHP收集到其构造函数中的选项,如下所示: 生成字段的PHP代码:如何将选项从PHP传递到Javascript?,javascript,php,jqbootstrapvalidation,Javascript,Php,Jqbootstrapvalidation,我使用BootstrapValidator作为验证组件。我需要给出从PHP收集到其构造函数中的选项,如下所示: 生成字段的PHP代码: $fields = ""; foreach ($form["questions"] as $key => $value) { if (!empty($value["validators"])) { $fields .= "\"" . $key . "\":" . json_encode($value["validators"]) .
$fields = "";
foreach ($form["questions"] as $key => $value) {
if (!empty($value["validators"])) {
$fields .= "\"" . $key . "\":" . json_encode($value["validators"]) . ",";
}
}
$new_fields = "{" . chop($fields, ",") . "}";
Javascript部分是:
$('#my_form').bootstrapValidator({
message: 'This value is not valid',
feedbackIcons: {
valid: 'glyphicon glyphicon-ok',
invalid: 'glyphicon glyphicon-remove',
validating: 'glyphicon glyphicon-refresh'
},
fields: <?php echo $new_fields; ?>
});
那么,双引号会导致它不起作用吗?或者这有什么不对?不过,我想应该没那么多吧……我刚刚意识到我的评论不太完整 PHP代码
$fields = array();
foreach ($form["questions"] as $key => $value) {
if (!empty($value["validators"])) {
$fields[$key] = $value["validators"];
}
}
$('#my_form').bootstrapValidator({
message: 'This value is not valid',
feedbackIcons: {
valid: 'glyphicon glyphicon-ok',
invalid: 'glyphicon glyphicon-remove',
validating: 'glyphicon glyphicon-refresh'
},
fields: <?php echo json_encode($fields); ?>
});
JavaScript代码
$fields = array();
foreach ($form["questions"] as $key => $value) {
if (!empty($value["validators"])) {
$fields[$key] = $value["validators"];
}
}
$('#my_form').bootstrapValidator({
message: 'This value is not valid',
feedbackIcons: {
valid: 'glyphicon glyphicon-ok',
invalid: 'glyphicon glyphicon-remove',
validating: 'glyphicon glyphicon-refresh'
},
fields: <?php echo json_encode($fields); ?>
});
$(“#我的表单”).bootstrapValidator({
消息:“此值无效”,
反馈图标:{
有效:“glyphicon glyphicon ok”,
无效:“glyphicon glyphicon删除”,
正在验证:“glyphicon glyphicon刷新”
},
领域:
});
是的,我知道我做错了什么
这不是关于我如何编码数组$fields
,而是关于缺少bootstrapValidator所需的子验证器
我刚刚改变了这个:
........
$fields[$key]=$value[“验证器”];
........
为此:
........
$fields[$key][“validators”]=$value[“validators”];
........
它将我的整个对象转换为bootstrapValidator所需的内容。还感谢bootstrapValidator的所有者让我意识到我错过了验证器
键
以下是完整的库链接:
希望你们觉得它有用。什么是$fields
?这是json_encode()的结果吗?另外,您的示例在“消息”中缺少一个“
”:“…
要么$fields
缺少它,要么您的复制/粘贴缺少关闭”字段下的消息
的确认
选项。伙计们,我已经添加了PHP部分并修复了缺少的问题。”。谢谢你的警告。@FatihKaratana:不要自己构建JSON!使用PHP的json\u encode()
函数。您要做的是创建一个按需要格式化的数组,然后调用json\u encode()
。您只需要在最终结果中调用一次json\u encode()
。将您的循环替换为:$new\u fields=json\u encode($form[“questions”])代码>谢谢你的回答,但是你用了一种更好的方式来解释逻辑。字段仍然具有与我在问题中显示的内容相同的内容,并且验证仍然不起作用。我已经纠正了您在JSON编码中遇到的问题。我不清楚除此之外还有什么问题。我敢猜测PHP中的数据有问题。您的浏览器控制台中是否有JavaScript错误?不管怎样,在我的脏代码中输出为JSON。你让它变得更好了。没有。检查器中没有错误,只是验证程序不工作。请在$fields
数组上尝试print\r()
或var\u dump()
,并确保值和结构正确。我对BootstrapValidator不是很熟悉,但是很多jQuery函数和插件都会默默地失败。如果允许的话,别忘了接受你自己的答案。谢谢@Sonny,我会的。