2016-09-18 89 views
-2

我有下面的jQuery使用POST方法,并从ajax.php文件返回HTML数据(复选框),效果很好。
您能否请告知我如何将方法更改为.getJSON,以便从PHP检索多个数组?我对AJAX主题非常陌生,并且已经尝试了很多方法,但没有为我工作。AJAX - 更改发布获取JSON

// jQuery的

$.post('ajax.php', {ZemeArray,MestoArray},function(data) { 
    $(".CHCB:eq(0)").html(data); 

//ajax.php函数,返回HTML复选框的块

DisplayFilteredItems("Zeme","Zeme"); 

我已经尝试过如下改变它,而是返回HTML代码的PHP函数是错误的:

// jQuery的

$.getJSON('ajax.php', {ZemeArray,MestoArray},function(data) { 
    $(".CHCB:eq(0)").html(data.a); 
    $(".CHCB:eq(1)").html(data.b); 

//ajax.php函数,返回HTML复选框

<?php 

function AddFilterItem($item) 
{ 
    echo "<input type='checkbox' class='checkboxes' value=$item checked>$item<br>"; 
} 

function DisplayFilteredItems($order,$sqlSelect) { 
    $servername = "localhost"; 
    $username="root"; 
    $password=""; 
    $dbname="coasters"; 

    // create connection 
    $cxn=mysqli_connect($servername,$username,$password,$dbname); 
    mysqli_query($cxn,"SET NAMES 'utf8'"); 

    //check connection 
    if(!$cxn) 
     { 
      die("Connection failed"); 
     } 
    $sqlStart="SELECT DISTINCT"; 
    $sqlquery=" 
     FROM brewary 
     JOIN city ON brewary.Mesto_ID=city.Mesto_ID 
     JOIN collection ON brewary.Znacka_ID=collection.Znacka_ID 
     JOIN country ON country.Zeme_ID=city.Zeme_ID 
     JOIN type ON brewary.Druh_ID=type.Druh_ID 
     "; 

    if (isset($_GET['ZemeArray'])===true && empty($_GET['ZemeArray'])===false) { 
     $ZemeArrayChecked=' WHERE country.Zeme IN '.$_GET['ZemeArray']; 
    } 
    else { 
     $ZemeArrayChecked=''; 
    } 

    if (isset($_GET['MestoArray'])===true && empty($_GET['MestoArray'])===false) { 
     $MestoArrayChecked=' WHERE city.Mesto IN '.$_GET['MestoArray']; 
    } 
    else { 
     $MestoArrayChecked=''; 
    } 

    $sqlWhere= 
     $ZemeArrayChecked. 
     $MestoArrayChecked 
     ; 

    $preorder="ORDER BY "; 
    $order1=$preorder.$order; 

    $sql=$sqlStart.' '.$sqlSelect.' '.$sqlquery.' '.$sqlWhere.' '.$order1; 

    $result = mysqli_query($cxn,$sql); 


    echo"<input type='checkbox' class='VSE' checked>VYBER VŠE<br>"; 

    //$row=mysqli_fetch_array($result, MYSQLI_ASSOC); 

    while($row = $result->fetch_array()) 
     { 
      $row=$row; 
      $rows[] = $row; 
     } 

    foreach($rows as $row) 
     { 
      AddFilterItem($row["$sqlSelect"]); 
     } 

    $result->free();         

    mysqli_close($cxn); 

    $pokus=DisplayFilteredItems("Zeme","Zeme"); 
} 
$pokus2=DisplayFilteredItems("Mesto","Mesto"); 


echo json_encode('a'=>$pokus, 'b'=>$pokus2); 
?> 
+0

您是否改变PHP脚本使用'$ _GET'而不是'$ _POST'来获取参数? – Barmar

+0

'DisplayFilteredItems()'返回HTML还是回显它?您需要它来返回HTML,以便将其放入数组中。 – Barmar

+1

您需要发布代码的所有相关部分。 – Barmar

回答

0

DisplayFilteredItemsAddFilterItem需要的块返回值,而不是附和他们的结果。

<?php 

function AddFilterItem($item) 
{ 
    return "<input type='checkbox' class='checkboxes' value=$item checked>$item<br>"; 
} 

function DisplayFilteredItems($order,$sqlSelect) { 
    $servername = "localhost"; 
    $username="root"; 
    $password=""; 
    $dbname="coasters"; 

    // create connection 
    $cxn=mysqli_connect($servername,$username,$password,$dbname); 
    mysqli_query($cxn,"SET NAMES 'utf8'"); 

    //check connection 
    if(!$cxn) 
     { 
      die("Connection failed"); 
     } 
    $sqlStart="SELECT DISTINCT"; 
    $sqlquery=" 
      FROM brewary 
      JOIN city ON brewary.Mesto_ID=city.Mesto_ID 
      JOIN collection ON brewary.Znacka_ID=collection.Znacka_ID 
      JOIN country ON country.Zeme_ID=city.Zeme_ID 
      JOIN type ON brewary.Druh_ID=type.Druh_ID 
      "; 

    if (isset($_GET['ZemeArray'])===true && empty($_GET['ZemeArray'])===false) { 
     $ZemeArrayChecked=' WHERE country.Zeme IN '.$_GET['ZemeArray']; 
    } 
    else { 
     $ZemeArrayChecked=''; 
    } 

    if (isset($_GET['MestoArray'])===true && empty($_GET['MestoArray'])===false) { 
     $MestoArrayChecked=' WHERE city.Mesto IN '.$_GET['MestoArray']; 
    } 
    else { 
     $MestoArrayChecked=''; 
    } 

    $sqlWhere= 
     $ZemeArrayChecked. 
     $MestoArrayChecked 
     ; 

    $preorder="ORDER BY "; 
    $order1=$preorder.$order; 

    $sql=$sqlStart.' '.$sqlSelect.' '.$sqlquery.' '.$sqlWhere.' '.$order1; 

    $result = mysqli_query($cxn,$sql); 


    $output = "<input type='checkbox' class='VSE' checked>VYBER VŠE<br>"; 

    //$row=mysqli_fetch_array($result, MYSQLI_ASSOC); 

    while($row = $result->fetch_array()) 
     { 
      $row=$row; 
      $rows[] = $row; 
     } 

    foreach($rows as $row) 
     { 
      $output .= AddFilterItem($row["$sqlSelect"]); 
     } 

    $result->free();         

    mysqli_close($cxn); 

    return $output; 

} 
$pokus=DisplayFilteredItems("Zeme","Zeme"); 
$pokus2=DisplayFilteredItems("Mesto","Mesto"); 

echo json_encode('a'=>$pokus, 'b'=>$pokus2); 
?> 
+0

谢谢Barmar,这已经解决了! – Jar