簡體   English   中英

Ajax成功需要php JSON對象的支持

[英]Ajax success need something for php JSON object

我正在嘗試使用ajax和php json創建一個用戶搜索系統,例如facebook。 但是我有一個問題。

從數據用戶表中可以看到Marc ZuckerbergMarc ZeynMarc Alp 我的意思是3用戶的名字是相同的,所以通常在我寫Marc名稱時,我應該從數據中獲取所有Marc名稱。 喜歡

<div class="ul">Marc Zuckerbert</div>
<div class="ul">Marc Zeyn</div>
<div class="ul">Marc Alp</div>

但我並沒有獲得所有馬克的名字,只是我得到了一個馬克的結果。 Chrome開發者控制台會向我顯示所有Marc名稱,但不會在HTML中顯示我的名稱。 我認為我需要一些來自Ajax成功的代碼。

JS

$('body').delegate('#searchkey','keyup', function(){
      clearTimeout(timer);
      timer = setTimeout(function(){
          var box = $('#searchkey').val();
          contentbox = $.trim(box);
          var dataString = 'keys=' + contentbox;
          if(contentbox !==''){
            $.ajax({
              type: "POST",
              url: siteurl +"requests/search.php",
              data: dataString,
              dataType:"json",
              cache: false,
              beforeSend: function(){},
              success: function(data){ 
                   $('.un').html(data.username);
                   $('.uf').html(data.fullname);
              }
            });
          }
      });
   });

search.php中

<?php
include_once 'inc.php';
if(isset($_POST['keys'])) {
     $keys = mysqli_real_escape_string($db, $_POST['keys']); 
    $keyRestuls = $WidGet->SearchUser($keys);
    if($keyRestuls) {
        // If array is in data
     foreach($keyRestuls as $datas) { 
        $dataUsername = $datas['username'];
        $dataUserID = $datas['fullname'];
        $data = array(
          'username' => $dataUsername,
          'fullname' => $dataUserID
        );  
       echo json_encode( $data );   
 }
}
}
?>

SearchUser函數在這里

    public function SearchUser($keys){
       $keys = mysqli_real_escape_string($this->db, $keys);
       $result = mysqli_query($this->db,"SELECT 
          username,
          uid,
          fullname FROM 
          users WHERE 
          username like '%{$keys}%' or fullname like '%{$keys}%' 
          ORDER BY uid LIMIT 10") or die(mysqli_error($this->db));
             while($row=mysqli_fetch_array($result,MYSQLI_ASSOC)) {
                 $data[]=$row;
             }
             if(!empty($data)) {
             // Store the result into array
              return $data;
             } 
      }

您的PHP腳本正在生成格式錯誤的JSON

{"username":"marc1","fullname":"Marc Zuckerberg"}
{"username":"marc3","fullname":"Marc Zeyn"} 
{"username":"marc2","fullname":"Marc Alp"} 

它應該產生

[
    {"username":"marc1","fullname":"Marc Zuckerberg"},
    {"username":"marc3","fullname":"Marc Zeyn"},
    {"username":"marc2","fullname":"Marc Alp"},
]

您可以通過附加到數組中來解決問題,而不是獨立地寫每行

foreach($keyRestuls as $datas)
{ 
    $dataUsername = $datas['username'];
    $dataUserID = $datas['fullname'];
    $data[] = array(
      'username' => $dataUsername,
      'fullname' => $dataUserID
    );    
}
echo json_encode( $data ); 

然后,您必須在JS中循環$data ,我建議您使用$.each

function success(data) {
    $.each(data, function(key, value) {
        console.log(value.username + ": " + value.fullname);
    })
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM