javascript
  • php
  • 2013-12-18 4243 views 6 likes 
    6

    Xin chào, tôi đã tạo một mảng trong PHP. Và tôi cần đưa mảng đó vào một hàm javascript. Đây là những gì tôi đã thử.Gửi mảng PHP tới 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++; 
    } 
    

    Và đây là mã javascript của tôi.

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

    Nhưng điều này mang lại cho tôi một lỗi như thế này

    SyntaxError: syntax error 
    var P= <br /> 
    

    Không phải là nó có thể để có được những mảng theo cách này. Xin ai giúp tôi.

    UPDATE: Đây là trận chung kết đặt ra các thông báo lỗi của tôi

    <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

    Đó có phải là mã JavaScript bên trong tệp PHP không? –

    +1

    Tôi không tin rằng 'echo json_encode ($ ValidatinArray);' kết quả trong một ''' trần '. Có quá trình xử lý nào sau này không? – Wrikken

    +1

    @Wrikken - rằng '
    'xuất hiện sau chỉnh sửa của @ thefourtheye để làm nổi bật mã của anh ấy, tôi giả sử nó đến từ SOYS của WYSIWYG –

    Trả lời

    -1

    Trong php json_encode mảng như thế này:

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

    và trong javascript:

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

    'eval()' trong JavaScript không được khuyến nghị là để phân tích cú pháp dữ liệu JSON! Xem [Cách phân tích JSON trong JavaScript] (http://stackoverflow.com/a/4935684/2594742) để có cách tốt hơn. – AeroX

    0

    Các vấn đề là, trong biến $ValidatinArray không có sẵn trong tệp, hãy in tệp javascr mã ipt. Có lẽ trang hướng dẫn này sẽ giúp bạn:

    http://www.php.net/manual/en/language.variables.scope.php

    0

    Thẻ của bạn đến từ các hình thức mà bạn đang gửi. kiểm tra dữ liệu biểu mẫu của bạn là gì trước khi bạn mã hóa dữ liệu đó để xác minh đầu ra. bạn có thể sử dụng console.log ($ ("form));

    Cũng sử dụng biểu mẫu không phải là một ý tưởng hay vì nếu bạn có nhiều hơn một biểu mẫu và biểu mẫu là tên chung. tên như "myForm" để bạn có thể nhắm mục tiêu mà hình thức cụ thể

    Hope this helps

    0

    Xin lỗi vì sự chậm trả lời ... Hãy thử viết lại document.ready của bạn như:.

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

    Hãy thử điều này :

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

    Những gì bạn làm chỉ đơn giản là lặp lại js bằng cách sử dụng php.

    Các vấn đề liên quan