【问题标题】:Searching via $.getJSON not work?通过 $.getJSON 搜索不起作用?
【发布时间】:2016-03-28 06:49:55
【问题描述】:

我在谷歌上搜索过这个问题,但仍然没有找到答案。

我尝试使用 getJSON 方法通过 Jquery JSON 创建 Seaching。这是我的代码

PHP 文件: report_cari.php

<?php
header('Content-Type: application/json');
include "koneksi.php";
ini_set('display_errors', '0');


$sql = "SELECT RID,MESIN,DATE(HARI_TGL)AS TGL,TGL_REAL,PRODUK FROM adonan WHERE DATE(HARI_TGL) LIKE '%".$_REQUEST['term']."%' OR PRODUK LIKE '%".$_REQUEST['term']."%' GROUP BY RID ORDER BY TGL_REAL DESC";

$hasil = mysqli_query($mysqli, $sql);
$results = array();

foreach($hasil as $row){

     $results[] = array(
          'RID'=> $row[RID],
          'MESIN' => $row[MESIN],
          'TGL' => $row[TGL],
          'TGL_REAL' => $row[TGL_REAL],
          'PRODUK' => $row[PRODUK],
     );
}


$json = json_encode($results);

echo $json;
?>

和javascipt:report.php

    <input id="CARILAH" data-type="search">


<div style="width: 100%; height: 400px; overflow: auto">
        <table data-role="table" id="tabel1" data-mode="columntoggle" class="ui-body-d ui-shadow table-stripe ui-responsive" data-column-btn-theme="b" data-column-btn-text="Columns to display..." 
        data-column-popup-theme="a" data-input="#filterTable-input">
         <thead>
           <tr class="ui-bar-d">
             <th data-priority="1" align='center'>RID</th>
             <th data-priority="1" align='center'>MESIN</th>
             <th data-priority="1" align='center'>TGL</th>
             <th data-priority="1" align='center'>WAKTU</th>
             <th data-priority="1" align='center'>PRODUK</th>
           </tr>
         </thead>
         <tbody>
            <!--div id='records_table'></div-->
         </tbody>
         </table>
</div>  

javascript

 <script src="jqm2/jquery-2.1.4.min.js"></script>
    <script src="jqm2/jquery.mobile-1.4.5.min.js"></script>
    <script src="validation/jquery.validate.js"></script>
    <script>
    $(document).ready(function(){

/*for view data*/
    $.ajax({
      type: "POST",
      url: "report_action.php",
      dataType: "json",

     success: function (response) {

        // alert(JSON.stringify(response));

        var trHTML = '';
        $.each(response, function (i, item) {

            trHTML += '<tr><td>' + item.RID + '</td><td>' + item.MESIN + '</td><td>' + item.TGL + '</td><td>' + item.TGL_REAL + '</td><td><a href="report_detail.php?RID='+ item.RID +'" data-ajax="false" target="_parent">' + item.PRODUK + '</a></td></tr>';     
        });
        $('#tabel1 tbody').append(trHTML);
    },



});


   /*for searching data*/
   $("#CARILAH").keyup(function(){
      var oke = $(this).val();

          //alert(oke);
          $.getJSON("report_cari.php", function(result){

                 if (!json[0]) {
                    //console.log("NO DATA!")
                    alert("tidak ada data");
                 }          
                 else{
                         var trHTML = '';
                      $.each(response, function (i, item) {

                      trHTML += '<tr><td>' + item.RID + '</td><td>' + item.MESIN + '</td><td>' + item.TGL + '</td><td>' + item.TGL_REAL + '</td><td><a href="report_detail.php?RID='+ item.RID +'" data-ajax="false" target="_parent">' + item.PRODUK + '</a></td></tr>';       
                     });
                    $('#tabel1 tbody').append(trHTML); 

                 }               


          });

     });

});
</script>

此文件是用于搜索和查看数据的组合 ajax。 但不工作。 查看数据 工作。搜索数据不起作用。如何使用 $getJSON keyup 事件从 json_encode 获取数据?

nb:report_cari.php 工作并且可以生成 JSON。

有人可以帮忙吗?

提前致谢。

【问题讨论】:

  • 这个JS文件和“report_cari.php”是不是同级的?..好像是URL问题。
  • js文件和report.php在同一个地方
  • 检查浏览器控制台中的调用..它应该会显示一些东西,
  • @tachie_28,控制台显示 json 未定义,但如果我运行 report_cari.php?term=2016 它可以工作 [{"RID":"D51390","MESIN":"","TGL ":"2016-03-28","TGL_REAL":"10:00:00","PRODUK":"Montego Chocolate Choco Chips 50 g"},{"RID":"A72951","MESIN":" M3","TGL":"2016-03-28","TGL_REAL":"09:30:00","PRODUK":"Litelmaxx 奶酪 45 克"}]
  • 它可能是指回调中的 json 数组..您期望它在结果变量中但使用 json[0].. 它应该是结果 [0] 吗?

标签: jquery json ajax


【解决方案1】:

将搜索到的参数发送到服务器,如下所示,$.getJSON 有可选参数数据

$("#CARILAH").keyup(function(){
      var oke = $(this).val();

          $.getJSON("report_cari.php",{term : oke}, function(result){

                 if (result.length == 0) {
                    console.log("NO DATA!")

                 }          
                 else{
                         var trHTML = '';
                      $.each(result, function (i, item) {

                      trHTML += '<tr><td>' + item.RID + '</td><td>' + item.MESIN + '</td><td>' + item.TGL + '</td><td>' + item.TGL_REAL + '</td><td><a href="report_detail.php?RID='+ item.RID +'" data-ajax="false" target="_parent">' + item.PRODUK + '</a></td></tr>';       
                     });
                    $('#tabel1 tbody').append(trHTML); 

                 }               


          });

     });

【讨论】:

  • 我已经尝试过您的建议,但仍然无效。控制台结果 ReferenceError: 响应未定义,我的代码是否与其他 jquery 崩溃?
  • 如果您使用响应作为变量,那么还要在 getJSON 的函数(响应)中更改它
  • 你能编辑你的答案吗,因为我还是不明白。
  • 能否将您的搜索代码替换为上述代码
  • 我已将其替换为您的建议。是的,它会在 keyup 上附加数据,但是当我删除我的关键字时它不会回来。我该怎么做?
猜你喜欢
  • 2011-10-30
  • 2013-05-25
  • 1970-01-01
  • 2015-03-12
  • 1970-01-01
  • 2017-04-27
  • 2023-03-12
  • 2013-11-26
  • 2018-08-23
相关资源
最近更新 更多