2016-08-02 1 views
0

У меня есть следующая функция JQuery.Как использовать цикл PHP в JQuery

<script> 

    var forbiddenWords = ['Phone', 'Home', 'Address', 'Number', 'Postcode', 'email', 'call','n u m b e r']; 
    $(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. Я написал следующий код, но он не работает ..!

 <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> 

Слова выглядят следующим образом ..!

var forbiddenWords = [phonenumberaddress];

Пожалуйста, помогите.

+0

Проверьте консоль ошибок – scrappedcola

+0

вы можете console.log этой переменной forbiddenWords? – MouradK

+0

$ res-> rest_words - это массив слов? или одну строку? – Mickey

ответ

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> 
+0

Синтаксическая ошибка: конечная запятая после последнего элемента массива – NDM

+0

Я обновил свой ответ. – Manolo

0

Повторяя, как это непосредственно в Javascript не правильный способ передачи информации. Было бы проще, если вы преобразуете свой массив $ result в json, чтобы он был более родным для js. Попробуйте:

http://php.net/manual/en/function.json-encode.php

Так это должно выглядеть примерно так:

var forbiddenWords = <?=json_encode($result)?>; 
+0

Производит массив объектов. '$ result' должен отображаться сначала в ожидаемую структуру вывода – charlietfl

+0

var forbiddenWords = [{" rest_word ":" phone "}, {" rest_word ":" number "}, {" rest_word ":" address "}]; –

+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); ?>; 

ИЛИ

var forbiddenWords = <?php echo json_encode(array_map(function($record){ return $record->rest_words; }, $result)); ?>; 
+0

, код дает некоторую синтаксическую ошибку. –

+0

Я сделал некоторые исправления ошибок на нем – NDM

+0

Можете ли вы показать мне ошибку? –

Смежные вопросы