我有以下JQuery函数。
<script>
var forbiddenWords = [<?php foreach($result as $res) { echo $res->rest_words; } ?>];
$(function () {
$('.msgbox').on('keyup', function(e) {
forbiddenWords.forEach(function(val, index) {
if (e.target.value.toUpperCase().indexOf(val.toUpperCase()) >= 0) {
e.target.value = e.target.value.replace(new RegExp( "(" + val + ")" , 'gi' ), '');
}
});
});
});
</script>
我希望fordiddenWords数组中的单词应该是动态的,必须来自MySQL数据库。我写了下面的代码,但它不起作用..!
<h1> MY TEXT. orem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. </h1>
<div class="one"> </div>
<div class="two"> </div>
单词看起来像这样..!
var forbiddenWords = [phonenumberaddress];
请帮助。
答案 0 :(得分:1)
你可以简单地使用json_encode函数将php数组转换为JSON / Javascript对象或数组
var forbiddenWords = [<?php foreach($result as $res) { echo $res->rest_words; } ?>];
将其替换为
<?php
$arr=array();
foreach($result as $res) { $arr[]=$res->rest_words; }
?>
var forbiddenWords = <?php echo json_encode($arr); ?>;
OR
var forbiddenWords = <?php echo json_encode(array_map(function($record){ return $record->rest_words; }, $result)); ?>;
答案 1 :(得分:0)
您错过了逗号和引号:
<script>
var forbiddenWordsString = <?php foreach($result as $res) { echo "'" . $res->rest_words . "',"; } ?>;
var forbiddenWords = [forbiddenWords.substring(0, str.length - 1)]; // remove last comma
$(function () {
$('.msgbox').on('keyup', function(e) {
forbiddenWords.forEach(function(val, index) {
if (e.target.value.toUpperCase().indexOf(val.toUpperCase()) >= 0) {
e.target.value = e.target.value.replace(new RegExp( "(" + val + ")" , 'gi' ), '');
}
});
});
});
</script>
答案 2 :(得分:0)
直接在Javascript中这样回传并不是传递信息的正确方法。如果将$ result数组转换为json会更容易,因此它更适合js。试试:
http://php.net/manual/en/function.json-encode.php
所以看起来应该是这样的:
var forbiddenWords = <?=json_encode($result)?>;