2016-10-12 3 views
-1

Я пытаюсь передать php-массив функции ajax, потому что мне нужна функция ajax для заполнения некоторых динамически создаваемых таблиц. поэтому для этого я решил, что мне нужно передать значения, которые я намерен передать в массиве, и передать их все сразу, так что моя функция ajax может объявляться только один раз, чтобы избежать проблемы, когда последняя динамическая таблица только заполненный в конце (хотя я не слишком уверен, что именно по этой причине). А также как $ _GET параметры массива, которые я буду отправлять, но до сих пор результат обратный, потому что это первая динамическая таблица, которая заполняется. так что заставляет меня поверить, что только мое первое значение массива посылает мой ajax. Heres мой код:Передача php-массива в качестве параметра ссылки на функцию ajax

<script> 
function cat_product(val1){ 
    if(window.XMLHttpRequest){ 
     xhttp = new XMLHttpRequest(); 
    }else{ 
     xhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xhttp.onreadystatechange = function(){ 
     if(xhttp.readyState == 4 && xhttp.status == 200){ 
      window.alert(val1.length);//this proves to me that the ajax works 
      document.getElementById("cat_products").innerHTML = xhttp.responseText; 
     } 
    }; 

    xhttp.open("POST","ajax/cat_product.php?id="+val1,true); 
    xhttp.send(); 
} 

</script> 

    <?php 
    $store_key = $_SESSION['store_key']; 
     $query = "SELECT category_key FROM product_category WHERE store_key = '{$store_key}' ORDER BY category_name ASC"; 
     $category_set = mysqli_query($connect,$query);//for loop 
     confirm_query($connect,$category_set); 
     $number = mysqli_num_rows($category_set); 

     $_SESSION['sesssion_category'] = array(); 
     $_SESSION['sesssion_productCategory'] = array(); 
     $_SESSION['value'] = array(); 
     for($i=0;$i<$number;$i++){ 
    $sessionCategory = mysqli_fetch_array($category_set); 

     $_SESSION['sesssion_category'][] = $sessionCategory['category_key']; 
     } 



    foreach ($_SESSION['sesssion_category'] as $value) { 

    $_SESSION['value'][] = $value; // this is the array where i store the values i want to pass 
    /* this where i create another array who's key are named after each values 
from $_SESSION['sesssion_category'] and allocate items that matches each key from the database */ 
    if($_SESSION['store_key'] == $_SESSION['user_id']){ 
     $query = "SELECT DISTINCT product_key FROM products WHERE store_key = '{$store_key}' AND category_key = '{$value}' ORDER BY branch_code,product_name ASC"; 
     $product_set = mysqli_query($connect,$query); 
    confirm_query($connect,$product_set); 
    while($product = mysqli_fetch_array($product_set)){ 
    $_SESSION['sesssion_productCategory'][$value][] = $product['product_key']; 
     } 

    }else{ 
    $query = "SELECT DISTINCT product_key FROM products WHERE store_key = '{$store_key}' AND branch_code = '{$_SESSION['branch_code']}' AND category_key = '{$value}' ORDER BY branch_code,product_name ASC"; 
    $product_set = mysqli_query($connect,$query); 
    confirm_query($connect,$product_set); 
    while($product = mysqli_fetch_array($product_set)){ 
    $_SESSION['sesssion_productCategory'][$value][] = $product['product_key']; 
     } 

    } 



    ?> 
    <ol id="chaps"> 
    <li><button class="button button-3d button-leaf" ><?php echo ucfirst(get_category($value));?></button> 

    <table id="datatable1" class="table table-striped table-bordered assignments hide" cellspacing="0" width="100%"> 
    <caption>Product Details</caption> 
    <thead> 
    <tr> 
     <th>#</th> 
     <th>Product Name</th> 
     <th>Total Pieces</th> 
     <?php 
     if($_SESSION['store_key'] == $_SESSION['user_id']){ 
     echo "<th>Action</th>"; 
     }else{ 
     echo ""; 
     } 
     ?> 
     </tr> 
    </thead> 

     <tfoot> 
    <tr> 
    <th>#</th> 
    <th>Product Name</th> 
    <th>Total Pieces</th> 
     <?php 
    if($_SESSION['store_key'] == $_SESSION['user_id']){ 
     echo "<th>Action</th>"; 
    }else{ 
     echo ""; 
     } 
     ?> 
    </tr> 
    </tfoot> 
    <tbody id="cat_products"> 

    </tbody> 
    </table> 


     </li> 
    </ol> 

    <?php 
    } 

    ?> 
    </div> 


    </div> 

    </div> 




<!--<script> 
var x = <?php echo '["' . implode('", "', $_SESSION['value']) . '"]' ?>; 
window.onload = cat_product.apply(this,x); 
</script>--> 
<script> 
var x = <?php echo json_encode($_SESSION['value']) ?>; 
window.onload = cat_product.apply(this,x); 
</script> 

я попробовал (<?php echo '["' . implode('", "', $_SESSION['value']) . '"]'>; `?), Но это, как это не является надежным.

то Аякса страница, где я обрабатывать мой Аякс cat_product.php

$value = $_GET['id'];//$value = explode(",", $_GET["id"]); 


    foreach($_SESSION['value'] as $sessionValue){ 

    if($sessionValue == $value){ 
    //create an array of $_SESSION['sesssion_productCategory'] category keys 
    $ary = array_keys($_SESSION['sesssion_productCategory']); 
    foreach($ary as $cat_key){ 
    //Count the created array inorder not to exceed number of products 
    for($j=0;$j<count($ary);$j++){ 
    //query for displaying products 
    if($sessionValue == $cat_key){ 
    $value2 = $sessionValue; 
foreach($_SESSION['sesssion_productCategory'][$value2] as $key){ 
    ?> 
    <tr> 
    </tr>  
    <?php 
             } 
            } 
           } 
          } 
         } 
        } 
     ?> 
+0

вы можете передать ваш php-массив как json в теге

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