首页 > 解决方案 > json_encode 不想提供数据(或其他错误)

问题描述

这里是新手,也是编码新手(有点)。我通过制作实用的数据库来学习。部分代码来自教程,但我了解它的主要工作原理和方式,如果不是,世界上到处都是答案,其中大部分都在这里:)

有了这个特殊的问题,我相信我只是错过了一些东西,需要焕然一新,因为我被困了 3 天,不明白为什么它不能自己工作。

问题: Fetch.php 正在从 sql 中获取数据并将其交给main.phpecho $outputhtml 代码)。然后我决定要制作自己的分页系统,并且也需要从中获取行数fetch.php。所以和json_encode函数和数据类型:json调用者。它应该可以工作,但不能检索任何数据。它与我的其他功能一起工作得很好。

那我看不到什么?

PS 我在 ajax 之前和之后以及成功函数内部都放置了警报。前两个正在触发。所以我假设 fetch 有问题,它不想返回数据。

PPS 函数 fetch_pasutijumi 在没有ajax 请求和(不使用数组)的情况下不会从echo json_encode($out);...中得到任何东西,并且它可以工作并返回 html 数据。dataType:'json',echo ($outputs)

function fetch_pasutijumi(query, lim, from)
  {
    $.ajax({
    url:"fetch_pasutijumi.php",
    method:"POST",
    data:{query:query, lim:lim, from: from},
    dataType:'json',
    success:function(data)
    {
      result = data.outputs;
      $("#result").html(result);
    }
    });
  }


if(isset($_POST["query"]))
   {
      $lim = $_POST["lim"];
      $from = $_POST["from"];
      $search = $_POST["query"];
      $sql = "SELECT job.id AS id, job.red_nr as red_nr, job.name as name, date(job.date) as date, status.name as status_name FROM job LEFT JOIN status ON job.status_id = status.id WHERE job.red_nr LIKE '%".$search."%' OR job.name LIKE '%".$search."%' ORDER BY job.id DESC LIMIT ".$from.", ".$lim;
   }
   else
   {
     $sql = "SELECT job.id AS id, job.red_nr as red_nr, job.name as name, date(job.date) as date, status.name as status_name FROM job LEFT JOIN status ON job.status_id = status.id ORDER BY job.id DESC LIMIT ".$from.", ".$lim;
   } 
$outputs = '
  <table class="tbl_1">
        <tr class="tbl_head">
            <th>Red NR</th> 
            <th>Nosaukums</th>
            <th>Datums</th>
            <th>Status</th>
            <th><div name="" id=""></th>
            <th></th>
        </tr>
'; 
$query = $pdo->prepare($sql);
$query->execute();
$result = $query->fetchAll();
$total_row = $query->rowCount();


if($total_row > 0)
{
  $outputs .='
    <tr class="tbl_row">
      <td class="td_red_nr"><div id="rednew"><i class="fa fa-plus-square pogas new" id="new"/>Jauns darbs</div></td>
      <td class="td_name"><div id="namenew"></div></td>
      <td class="td_date"><div id="datenew"></div></td>
      <td class="td_status"><div id="statusnew"></div></td>
      <td class="td_buttons1">
      <i style="display:none;" class="fa fa-check-square pogas save" id="new"/>
      <i style="display:none;" class="fa fa-ban pogas cancel" id="new"/>      
      </td>
    </tr>
  ';

  foreach($result as $row)
 {

  $date = date_create($row["date"]);

  $outputs .= '
    <tr class="tbl_row" id="'.$row["id"].'">
      <td class="td_red_nr"><div id="red'.$row["id"].'">'.$row["red_nr"].'</div></td>
      <td class="td_name"><div id="name'.$row["id"].'">'.$row["name"].'</div></td>
      <td class="td_name"><div id="date'.$row["id"].'">'.date_format($date, 'j M Y').'</div></td>
      <td class="td_name"><div id="status'.$row["id"].'">'.$row["status_name"].'</div></td>
      <td class="td_buttons1">
      <i style="display:none;" class="fa fa-pencil-square pogas edit" id="'.$row["id"].'" />
      <i style="display:none;" class="fa fa-check-square pogas save" id="'.$row["id"].'" />
      <i style="display:none;" class="fa fa-ban pogas cancel" id="'.$row["id"].'" />
      <i style="display:none;" class="fa fa-trash pogas delete" id="'.$row["id"].'" />
      </td>
    </tr>
  ';
 }
 $outputs .='</table>';
 $out['outputs'] = $outputs;
 echo json_encode($out);
}
else
{
 $out['outputs'] = $outputs;
 echo json_encode($out);
}

标签: phpjquery

解决方案


什么...

问题是json_encode不知何故不喜欢<html>php 文件中的标签!!!谁能想到呢?

我删除了两个 html 标签,它开始工作,因为它应该是 3 天前。echo $somethingajax没有这样的问题。


推荐阅读