2016-04-26 78 views
1

我无法找到答案我的问题...事实是即时通讯jQuery和JSON新。显示Json数据jQuery PHP MySQL

在登录页面上,当页面加载时,我想显示顶级客户和顶级曲目。 Iv通过来自php的echo显示它们,但我想创建JSON对象并将其发送到登录...循环并将其显示在无序列表中。

你们可以帮我创建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字符集。

我在代码函数utf8_encode功能... 解决这个问题,你必须将其设置在PDO对象的新定义:

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

这一变化即时发送JSON数据之后。