2016-04-26 14 views
1

私の問題の答えを見つけることができません...真実は、jQueryとJSONに新しいです。Jsonのデータを表示jQuery PHPのMySQL

ログインページでは、ページが読み込まれたときにトップの顧客とトップトラックを表示します。 Ivはphpからエコーを介して表示しますが、JSONオブジェクトを作成してlogin ...に送信し、そこにループして順序付けられていないリストに表示します。

JSONの作成とjqueryでの表示についてお手伝いできますか?ここで

は私のコードです:

のjQuery:

/* Function to load top Customers */ 
    function loadCustomers() { 

     /* Create data string to call functions in php*/ 
     var dataString ="function1=loadCustomers&function2=loadTracks"; 

     $.ajax({ 
      type:"GET", 
      url: "login.php", 
      data: dataString, 
      dataType: "json", 

      success: function(data) { 
       $("#error").show(); 
       $("#errormsg").html(data.FirstName); 

       //how can i display Json data in unordered list ? #customerList 

      }, 

      error: function() { 
       $("#error").show(); 
       $("#errormsg").text("cant display data"); 
      } 

     }); 
    } 

PHP:

}else if ($_SERVER["REQUEST_METHOD"] == "GET") { 

    //JSON customers array 
    $customers = array(); 


    if ($_GET["function1"] == "loadCustomers") { 
     try { 

      $customerStmt = $conn->prepare("Select customer.FirstName, customer.LastName, customer.City, sum(invoice.Total) from invoice INNER JOIN customer on invoice.CustomerId = customer.CustomerId group by invoice.CustomerId order by sum(invoice.total) DESC LIMIT 5"); 
      $customerStmt->execute(); 

      $customerRows = $customerStmt->fetchAll(); 

      //how to create JSON data to send it 

      header("Content-type: application/json"); 
      echo json_encode($customerRows); 

     }catch (PDOException $e) { 
      $e->getMessage(); 
     } 
    } 

答えて

3

さて、あなたは複数の顧客に対応しているようなコードから、それは見えますが、jQueryの中であなたがいますアレイにアクセスせずに直接データにアクセスする。したがって、このようになります

$.ajax({ 
    type:"GET", 
    url: "login.php", 
    data: dataString, 
    dataType: "json", 

    success: function(data) { 
     var items = []; 
     $.each(data, function(key, val) { 
      items.push("<li id='" + key + "'>" + val + "</li>"); 
     }); 

     $("<ul/>", { 
      "class": "my-new-list", 
      html: items.join("") 
     }).appendTo("#customerList"); 
    }, 

    error: function() { 
     $("#error").show(); 
     $("#errormsg").text("cant display data"); 
    } 
}); 
0

問題はPHPからJSONデータを受け取ることができませんでした。 グーグルで何時間も過ごした後、私は最終的にエラーを発見しました。

あなたはデータベースから読むときにutf-8 charsetに設定する必要があります。

私ははutf8_encode機能付きのコードでこの問題を修正して

... あなたはPDOオブジェクトの新しい定義でそれを設定する必要があります:JSONデータを送信し、この変更イム後

$conn= new PDO("mysql:host=$server;dbname=$database;charset=utf8", $user, $password); 
    $conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);