如何将选项从PHP传递到Javascript?

如何将选项从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"]) .

我使用BootstrapValidator作为验证组件。我需要给出从PHP收集到其构造函数中的选项,如下所示:

生成字段的PHP代码:

$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,我会的。