2013-12-18 5 views
6

Привет Я создал массив в PHP. И мне нужно получить этот массив в javascript-функции. Это то, что я пробовал.Отправка PHP-массива в Javascript

$GetTheValidationRule=mysqli_query($con,"SELECT * FROM Questions WHERE Form_ID='$FormID' AND QuestionsDataHave='YES' ORDER BY Questions_ID+0, Questions_ID"); 
$ValidatinArray=array(); 
$J=0; 
while($RowVal=mysqli_fetch_array($GetTheValidationRule)){ 
    $ValidatinArray[$J]= $RowVal['Validation_Type']; 
    $J++; 
} 

И Это мой код javascript.

$(document).ready(function() { 
    $("form").submit(function(){ 
    var P= <?php echo json_encode($ValidatinArray); ?>; 
     var O=P.length; 
     alert(O); 
     return false; 
    }); 
}); 

Но это дает мне ошибку, как этот

SyntaxError: syntax error 
var P= <br /> 

Возможно ли, чтобы получить массив таким образом. Пожалуйста, помогите мне.

UPDATE: Это последний из пут моего сообщения об ошибке

<script> 
$(document).ready(function() { 
$("form").submit(function(){ 
alert('AAAAAAAAAAAAAAAAAAA'); 
var IDsOfTheColumns=document.getElementsByName("DataColumnID[]"); 
var Data=document.getElementsByName("DataInputValue[]"); 
var A=IDsOfTheColumns.length; 
alert(A); 
<br /> 
    <b>Notice</b>: Undefined variable: ValidatinArray in <b>C:\xampp\htdocs\PHIS\CreateTheForm.php</b> on line <b>16</b><br /> 
     var P = null; return false; 

}); 
}); 


    </script> 
+0

Этот код JavaScript внутри файла PHP? –

+1

Я не верю 'echo json_encode ($ ValidatinArray);' приводит к голым '
'. Есть ли какая-нибудь обработка после этого? – Wrikken

+1

@Wrikken - этот '
' появился после редактирования @ thefourtheye, чтобы выделить его код, я предполагаю, что он пришел из SO's WYSIWYG –

ответ

-1

В PHP json_encode массив так:

$inlinejs=''; 
$inlinejs.='var validatinArray=\''.addslashes(json_encode($ValidatinArray)).'\';'."\n"; 
$inlinejs.='var validatinArray=eval(\'(\' + validatinArray + \')\');'."\n"; 

и в JavaScript:

$(document).ready(function() { 
    $("form").submit(function(){ 
    <?php echo $inlinejs; ?> 
    console.log(validatinArray); 
    }); 
}); 
+0

'eval()' в JavaScript не рекомендуется разбирать данные JSON! См. [Как разбирать JSON в JavaScript] (http://stackoverflow.com/a/4935684/2594742) для лучшего способа. – AeroX

0

Тег приходит из формы, которые вы отправляете. проверьте, каковы данные вашей формы, перед тем, как закодировать его, чтобы проверить вывод. вы можете использовать console.log ($ ("form));

Также использование формы - это не очень хорошая идея, поскольку, если у вас более одной формы и формы, это глобальное имя. Для форм вы должны дать ему уникальную форму назвать как «Myform», так что вы можете ориентировать эту специфическую форму

Надеется, что это помогает

0

Извини за поздний ответ ... Попробуйте переписывать document.ready как:.

$(document).ready(function() { 
    $("form").submit(function(){ 
    var P = JSON.parse('<?php echo json_encode($ValidatinArray); ?>'); 
     var O = P.length; 
     alert(O); 
     return false; 
    }); 
}); 
0

Попробуйте это :

<?php 


    echo ' <script> 
      $(document).ready(function() { 
           $("form").submit(function(){ 
           var P= '. json_encode($ValidatinArray) . '; 
           var O=P.length; 
           alert(O); 
           return false; 
          }); 
        }); 
       </script>'; 

?> 

Что вы делаете, просто эхо js, используя php.

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