2016-09-18 1 views
-2

Ich habe die folgende jquery, die POST-Methode verwendet und HTML-Daten (Kontrollkästchen) aus ajax.php-Datei zurückgibt und gut funktioniert.
Könnten Sie bitte beraten, wie ich die Methode zu .getJSON ändern könnte, damit ich mehrere Arrays aus PHP abrufen kann? Ich bin ziemlich neu im AJAX-Thema und habe schon viele Möglichkeiten ausprobiert, aber nichts hat für mich funktioniert.AJAX - Beitrag zu getJSON ändern

// jquery

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

//ajax.php Funktion, die Block html Kontrollkästchen gibt

DisplayFilteredItems("Zeme","Zeme"); 

ich schon versucht, es wie folgt zu ändern, aber die PHP-Funktion, die HTML-Code zurückgibt falsch ist:

// jquery

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

//ajax.php Funktion, den Block html Kontrollkästchen gibt

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

Haben Sie das PHP-Skript geändert, um '$ _GET' anstelle von' $ _POST' zu verwenden, um die Parameter zu erhalten? – Barmar

+0

Gibt 'DisplayFilteredItems() 'den HTML-Code zurück oder echo es? Sie benötigen es, um den HTML-Code zurückzugeben, damit Sie ihn in ein Array einfügen können. – Barmar

+1

Sie müssen alle relevanten Teile des Codes veröffentlichen. – Barmar

Antwort

0

DisplayFilteredItems und AddFilterItem Notwendigkeit Werten zurückzukehren, nicht ihre Ergebnisse Echo.

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

Danke Barmar, das hat es gelöst! – Jar