Ошибка в выводе консоли для json_encode для отображения результата в консоли? - PullRequest
0 голосов
/ 01 апреля 2020

К вашему сведению, я работаю на локальном хосте с wampserver, используя PHP и AJAX, пытаясь отобразить строки данных JSON (около 1526). и проблема в том, что я не могу отобразить строки, которые основаны на условиях поиска.

Вывод print_r($result_array); в выводе консоли, как показано ниже. здесь ниже pi c не беспокойтесь за консольную ошибку, это ошибка becoz массива PHP, используемого при разборе JSON. Этот вывод я использовал для проверки того, что файл моего сервера PHP работает правильно или нет, но работает правильно.

enter image description here

После этого я проверил свой функция кодирования, для которой при выводе echo json_encode($result_array); я получаю красную консольную ошибку для некоторых условий поиска, а в других условиях поиска я могу правильно отображать результаты. Например, ниже двух изображений

enter image description here

enter image description here

Я не могу выяснить, что происходит с моим кодом.

Файл search.php


<?php 

        // send a JSON encoded array to client

        include('connection.php');

        $sqlFlag = 0;

        function queryDelimiter(){
            global $sqlFlag;
            if ($sqlFlag == 0){
                $sqlFlag = 1;
                return ' WHERE ';
            }else{
                return ' AND ';
            }
        }

        $selectSQL = "SELECT * FROM tbl_main_lead_info";

        if(isset($_POST['lead_status']) and strlen(trim($_POST['lead_status'])) > 0){
            $selectSQL .= queryDelimiter()."LeadStatus = '".$_POST['lead_status']."'";
        }

        if(isset($_POST['lead_owner']) and strlen(trim($_POST['lead_owner'])) > 0){
            $selectSQL .= queryDelimiter()."LeadAddedBy = '".$_POST['lead_owner']."'";
        }

        if(isset($_POST['company_name']) and strlen(trim($_POST['company_name'])) > 0){
            $selectSQL .= queryDelimiter()."Company = '".$_POST['company_name']."'";
        }       

        if(isset($_POST['tech_area']) and strlen(trim($_POST['tech_area'])) > 0){
            $selectSQL .= queryDelimiter()."TechArea = '".$_POST['tech_area']."'";
        }

        if(isset($_POST['firm_size']) and strlen(trim($_POST['firm_size'])) > 0){
            $selectSQL .= queryDelimiter()."FirmSize = '".$_POST['firm_size']."'";
        }

        if(isset($_POST['firm_type']) and strlen(trim($_POST['firm_type'])) > 0){
            $selectSQL .= queryDelimiter()."FirmType = '".$_POST['firm_type']."'";
        }

        if(isset($_POST['country_name']) and strlen(trim($_POST['country_name'])) > 0){
            $selectSQL .= queryDelimiter()."Country = '".$_POST['country_name']."'";
        }

        if(isset($_POST['state_name']) and strlen(trim($_POST['state_name'])) > 0){
            $selectSQL .= queryDelimiter()."State = '".$_POST['state_name']."'";
        }

        if(isset($_POST['city_name']) and strlen(trim($_POST['city_name'])) > 0){
            $selectSQL .= queryDelimiter()."City = '".$_POST['city_name']."'";
        }

        if(isset($_POST['start_date']) and strlen(trim($_POST['start_date'])) > 0){
            $selectSQL .= queryDelimiter()."LastContactDate >='".$_POST['start_date']."'";
        }

        if(isset($_POST['end_date']) and strlen(trim($_POST['end_date'])) > 0){
            $selectSQL .= queryDelimiter()."NextContactDate <= '".$_POST['end_date']."'";
        }

        $selectSQL .= " ORDER BY FirstName ASC, LastName ASC, Lead_Id ASC";

        $result_array = array();

        $result = $conn -> query ($selectSQL);

        if(mysqli_num_rows($result) > 0){

            while ($row = $result->fetch_assoc()) {

                array_push($result_array, $row);

            }

        }

        // print_r($result_array);

        echo json_encode($result_array);

        // $selectSQL = "SELECT * FROM tbl_main_lead_info as M, tbl_campaign_info as C";

        $conn->close();

?>

Файл loadtable.js

// This is script to load table based on filter section

$(document).ready(function() {

    // Campaign Submit Info
    $('[name="search_submit"]').click(function(e) {

        $('#load-csv-file-button').attr('style','display:none;');
        $("#filterRecords").attr('style','display:block;');
        $('#add_lead_info').attr('style','display:none;');

        e.preventDefault();

        // GET the admin and user id value
        var adminvalue = $('#filterformpost').find('[name="adminvalue"]').val();
        var useridvalue = $('#filterformpost').find('[name="useridvalue"]').val();

        var lead_owner = $('#filterformpost').find('#lead_owner_select option:selected').val();
        var lead_status = $('#filterformpost').find('#lead_status_select option:selected').val();

        var company_name = $('#filterformpost').find('#company_name_select option:selected').val();
        var tech_area = $('#filterformpost').find('#tech_area_select option:selected').val();
        var firm_size = $('#filterformpost').find('#firm_size_select option:selected').val();
        var firm_type = $('#filterformpost').find('#firm_type_select option:selected').val();
        var country_name = $('#filterformpost').find('#country_name_select option:selected').val();

        var city_name = $('#filterformpost').find('#city_name_select option:selected').val();

        var state_name = $('#filterformpost').find('#state_name_select option:selected').val();
        var start_date = $('#filterformpost').find('#start_date_search').val();
        var end_date = $('#filterformpost').find('#end_date_search').val(); 

        // console.log('adminvalue: '+adminvalue)
        // console.log('useridvalue: '+useridvalue)
        // console.log('lead_owner: '+lead_owner)

        // console.log('country_name: '+country_name)
        // console.log('State: '+state_name)

        $.ajax({
              type: "POST",
              url: "./server/search.php",
              data: {
                  "lead_owner": lead_owner,
                  "lead_status": lead_status,                
                  "company_name": company_name,
                  "tech_area": tech_area,
                  "firm_size": firm_size,
                  "firm_type": firm_type,
                  "country_name": country_name,
                  "city_name": city_name,
                  "state_name": state_name,
                  "start_date": start_date,
                  "end_date": end_date
              },
              beforeSend: function() {

                  $('.search_lead_filter_message_box').html(
                      '<img src="tenor.gif" width="40" height="40"/>'
                  );
              },
              success:function(data){   

                  // console.log(data)

                  console.log("Data Length: "+data.length)

                  console.log(data)

                  if(data.length == 0){

                     $('.search_lead_filter_message_box').html('');
                     $("#filterRecords").html('No results fetched');

                  }

                  var result = $.parseJSON(data);
                  // console.log(result)       

                  //###########################################
                  // Pagination code start
                  //###########################################

                  $('.search_lead_filter_message_box').html('');

                  $("#filterRecords").empty();


                  //###########################################
                  // Pagination code end
                  //###########################################

                  $("#pagination").attr('style', 'display:block;');   

                  $("#number_of_rows").attr('style','display:block;');
                  $('#button-prev-next').attr('style','display:block;');                                

                  paginate_json_data(result, adminvalue, useridvalue)

              }           

          });         

    });    

});

function paginate_json_data(userDetails, adminvalue, useridvalue) {

    adminvalue = adminvalue
    useridvalue = useridvalue
    userDetails = userDetails

    var table = '';
    table = $("<table></table>");    

    $('#pagination').html('<div id="nav-numbers" class="col nav"></div>'); 

    $('#number_of_rows').html('');
    $('#number_of_rows').html('<p1>Total number of leads fetched: ' + userDetails.length + '</p1>');

    $('#button-prev-next').html('<button class="col PreviousButton" id="PreValue"><i class="ion-skip-backward"></i> Previous</button><button class="col NextButton" id="nextValue">Next <i class="ion-skip-forward"></i></button>');

    var max_size = userDetails.length;
    var sta = 0;
    var elements_per_page = 10;
    var limit = elements_per_page;

    if(max_size<10){

      // #####################################
      // NUMBER OF ROWS A < 10 START START
      // #####################################

      table.append('<thead><th>#</th><th>Name</th><th>Company</th><th>Website</th><th>Designation</th><th>Email</th><th style="width: 150px;">Phone</th><th>City</th><th>State</th><th>Country</th><th>Lead Status</th></thead>');

      table.append('<tbody id="myTable"></tbody>');

      goFun_Modified(sta, max_size);

      function goFun_Modified(sta, limit) {            

        for (var i = sta; i < limit; i++) {         

           var tab = '<tr><td>' + (i+1) + "\n" + '</td><td>' + "<a target='_blank' href=./lead/index.php?lead_id=" + userDetails[i].Lead_Id + " </a>" + userDetails[i].FirstName + ' ' + userDetails[i].LastName + "\n" + '</td><td>' + userDetails[i].Company + "\n" + '</td><td>' + userDetails[i].Website + "\n" + '</td><td>' + userDetails[i].Designation + "\n" + '</td><td>' + "<a href=mailto:" + userDetails[i].Email + ">" + userDetails[i].Email + "</a>" + "\n" + '</td><td style="width: 150px;" >' + userDetails[i].Phone + "\n" + '</td><td>' + userDetails[i].City + "\n" + '</td><td>' + userDetails[i].State + "\n" + '</td><td>' + userDetails[i].Country + "\n" + '</td><td>' + userDetails[i].LeadStatus + "\n" + '</td></tr>';

           console.log(tab)               

          $('#myTable').append(tab)

        }
      } // Function ended      

      $("#filterRecords").html(table);

      $('#nextValue').click(function() { 

          // checks if it's the last page
          if (currentPage < maxPage) {
            currentPage++;
            $pagingBtn.removeClass('active');
            $pagingBtn.eq(currentPage).addClass('active')
          } else {
            alert("End of page");
          }                     

      });

      $('#PreValue').click(function() {  

        // checks if it's the first page
        if (currentPage > 0) {
          currentPage--;
          $pagingBtn.removeClass('active');
          $pagingBtn.eq(currentPage).addClass('active')
        } else {
          alert("Start of page")
        }     

      });

      var number = Math.round(userDetails.length / elements_per_page);

      for (i = 0; i <= number; i++) {

        $('.nav').append('<button class="nav-numbers btn" id=' + i + '>' + (i+1) + '</button>');

      }

      $('.nav button').click(function() {

        var start = $(this).text()-1;

        // $(this).css({"background-color": "#e67e22", "color": "#ffffff"});

        $('#myTable').empty();

        limit = 10 * (parseInt(start) + 1) > max_size ? max_size : 10 * (parseInt(start) + 1)

        goFun_Modified(start * 10, limit);

        let $self = $(this);
        // gets index of button relative to it's siblings
        // https://api.jquery.com/index/
        currentPage = $self.index();
        $pagingBtn.removeClass('active');
        $self.addClass('active');

      });

      // saves all the paging buttons for reusing, instead of calling $() every time
      let $pagingBtn = $('#nav-numbers .btn');
      let maxPage = $pagingBtn.length - 1;
      let currentPage = 0;

      $('.nav button')[0].click()

      // #####################################
      // NUMBER OF ROWS A < 10 END
      // #####################################

    }else{

        // #####################################
        // NUMBER OF ROWS A > 10 START
        // #####################################  

        table.append('<thead><th>#</th><th>Name</th><th>Company</th><th>Website</th><th>Designation</th><th>Email</th><th>Phone</th><th>City</th><th>State</th><th>Country</th><th>Lead Status</th></thead>');

        table.append('<tbody id="myTable"></tbody>');

        goFun(sta, limit);

        function goFun(sta, limit) {

          for (var i = sta; i < limit; i++) {           

           var tab = '<tr><td>' + (i+1) + "\n" + '</td><td>' + "<a target='_blank' href=./lead/index.php?lead_id=" + userDetails[i].Lead_Id + " </a>" + userDetails[i].FirstName + ' ' + userDetails[i].LastName + "\n" + '</td><td>' + userDetails[i].Company + "\n" + '</td><td>' + userDetails[i].Website + "\n" + '</td><td>' + userDetails[i].Designation + "\n" + '</td><td>' + "<a href=mailto:" + userDetails[i].Email + ">" + userDetails[i].Email + "</a>" + "\n" + '</td><td>' + userDetails[i].Phone + "\n" + '</td><td>' + userDetails[i].City + "\n" + '</td><td>' + userDetails[i].State + "\n" + '</td><td>' + userDetails[i].Country + "\n" + '</td><td>' + userDetails[i].LeadStatus + "\n" + '</td></tr>';

            $('#myTable').append(tab)

          }

          $("#filterRecords").html(table);

        }// FUNCTION ENDED

        $('#nextValue').click(function() {

          var next = limit;
          if (max_size >= next) {

            def = limit + elements_per_page;

            limit = def

            $('#myTable').empty();

            if (limit > max_size) {

              def = max_size;

            }

            goFun(next, def);

          }   

          // checks if it's the last page
          if (currentPage < maxPage) {
            currentPage++;
            $pagingBtn.removeClass('active');
            $pagingBtn.eq(currentPage).addClass('active')
          } else {
            alert("End of page");
          }

        });

        $('#PreValue').click(function() {

          var pre = limit - (2 * elements_per_page);
          if (pre >= 0) {

            limit = limit - elements_per_page;
            $('#myTable').empty();
            goFun(pre, limit);

          }

          // checks if it's the first page
          if (currentPage > 0) {
            currentPage--;
            $pagingBtn.removeClass('active');
            $pagingBtn.eq(currentPage).addClass('active')
          } else {
            alert("Start of page")
          }

        });

        var number = Math.round(userDetails.length / elements_per_page);

        for (i = 0; i <= number; i++) {

          $('.nav').append('<button class="nav-numbers btn" id=' + i + '>' + (i+1) + '</button>');

           if(i == number){

          }          

        }       

        $('.nav button').click(function() {

          var start = $(this).text()-1;

          $('#myTable').empty();

          limit = 10 * (parseInt(start) + 1) > max_size ? max_size : 10 * (parseInt(start) + 1)

          goFun(start * 10, limit);

          let $self = $(this);
          // gets index of button relative to it's siblings
          // https://api.jquery.com/index/
          currentPage = $self.index();
          $pagingBtn.removeClass('active');
          $self.addClass('active');

        });

        // saves all the paging buttons for reusing, instead of calling $() every time
        let $pagingBtn = $('#nav-numbers .btn');
        let maxPage = $pagingBtn.length - 1;
        let currentPage = 0;

        $('.nav button')[0].click()

        // #####################################
        // NUMBER OF ROWS A > 10 END
        // ##################################### 

      }

  }

Обновлено:

enter image description here

1 Ответ

0 голосов
/ 01 апреля 2020

Попробуйте добавить спецификации типа контента в заголовок http:

header("Content-Type: application/json");

и установить функцию UNICODE в json_encode:

echo json_encode($result_array, JSON_UNESCAPED_UNICODE);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...