Обработка данных с помощью Jquery и Php

#php #jquery #ajax #json #arrayobject

#php #jquery #ajax #json #arrayobject

Вопрос:

Я создаю веб-приложение. В моем приложении, если пользователь нажимает кнопку поиска с двумя входными данными

Форма поиска

….. таблица с тремя столбцами должна выглядеть так, как показано на изображениях.

введите описание изображения здесь

Для достижения этой цели я использую jQuery и php. Когда я выполняю запрос, извлекаю значения и отправляю массив в виде объекта json в php, возникает проблема. Анализируемый JSON в jquery (на экране консоли) выглядит следующим образом

 [{"Name":"Dinesh", "Case_Status":"Open"}]
[{"Name":"Dinesh", "Case_Status":"Open"},{"Name":"Greg", "Case_Status":"Open"}]    [{"Name":"Dinesh", "Case_Status":"Open"},{"Name":"Greg", "Case_Status":"Open"},{"Name":"Sulshekharan", "Case_Status":"Open"}]
[{"Name":"Dinesh", "Case_Status":"Open"},{"Name":"Greg", "Case_Status":"Open"},{"Name":"Sulshekharan", "Case_Status":"Open"},{"Name":"Peter", "Case_Status":"Close"}]
  

Я повторил массив в цикле while, поэтому он отображается, как указано выше..

 $Update = array();
$Query = "Select.....";
$result = mysql_query($Query,$link);
while($row = mysql_fetch_assoc($result)or die(mysql_error()))
{
    $Update[] = array('Name' => $row['Name'], 
               'Case_Status' => $row['Case_Status'], 
                'Walk_in_ID' => $row['Walk_in_ID']);    
    echo json_encode($Update);  
}
  

Используя приведенный выше код, я получил следующую ошибку

  [{"Name":"P.Amulya Wilson ","Case_Status":"Open","Walk_in_ID":"2"}]
 [{"Name":"P.Amulya Wilson ","Case_Status":"Open","Walk_in_ID":"2"},
 {"Name":"P.Amulya Wilson","Case_Status":"Open","Walk_in_ID":"6"}] 
 SCRIPT1002: Syntax error 
 WalkinUpdate.js, line 52 character 3 
 (this line 52 is --> var response = JSON.parse(data);)
  

я также пробовал приведенный ниже код, но он ничего не возвращает ($ Update = «»)

 $Update = array();
$Query = "Select.....";
$result = mysql_query($Query,$link);
while($row = mysql_fetch_assoc($result)or die(mysql_error()))
{
    $Update[] = array('Name' => $row['Name'], 
               'Case_Status' => $row['Case_Status'], 
                'Walk_in_ID' => $row['Walk_in_ID']);        
}
 echo json_encode($Update);
  

Используя приведенный выше код, консоль выглядит так, как показано на рисунке ниже:
введите описание изображения здесь

После серфинга в Google и поиска в Интернете я также попробовал приведенный ниже код, но безрезультатно

 while($row = mysql_fetch_assoc($result)or die(mysql_error()))
{
    $Update[] = array('Name' => $row['Name'], 
         'Case_Status' => $row['Case_Status'], 
         'Walk_in_ID' => $row['Walk_in_ID']);   
    $superUpdate = json_encode($Update[sizeof($Update) - 1]);   
    echo $superUpdate;      
}
  

Я также пробовал mysql_fetch_array, но безрезультатно. Часть jQuery выглядит следующим образом: код

 $(document).on('submit', '#Update_Form', function(event)
{
    event.preventDefault();

    var Update = {};

    Update.EmployeeType = $("#employeeType").val(),
    Update.EmployeeID = $("#employeeID").val();
    console.log(Update);        
    $.post("php/walkin_data_update.php", Update, function(data)
    {
        console.log(data);
        var response = JSON.parse(data);
        console.log(response);
        console.log(response.length);
        $("#fieldset3").show();
        $("#UpdateForm2").show();
        for(var i=0;i<response.length;i  )
        {
            var j= 1;
            var Name = response[i].Name;
            var Status = response[i].Case_Status;
            $('#statusTable tr').last().after('<tr>
               <td id="statusName' j '">' Name '</td>
               <td id="statusCase' j '">' Status '</td>
               <td><button id="View' j '">View</button></tr>');
            count  ;
            j  ;
        }
    });
});
  

если я использую console.dir вместо console.log, это отображается как скриншот ниже:

введите описание изображения здесь

Я впервые использую jquery-ajax-php-json в такой ситуации. Пожалуйста, подскажите мне, как отобразить такие данные json в html с помощью jquery, как я могу это сделать ??. Извините за мой английский, если он непонятен. Заранее благодарю вас.

Комментарии:

1. Я не понимаю, где вы находите ошибку. Ваш вывод цикла while выглядит нормально, но позже вы говорите, что нашли $Output в виде пустой строки. Это массив, поэтому я не понимаю, как это может быть пустой строкой.

2. также было бы полезно показать нам консоль. запишите выходные данные, если ваша проблема связана с синтаксическим анализом javascript / JSON. Выводятся ли данные вообще из php? Если нет, попробуйте вывести json_last_error() после вашего json_encode и посмотреть, жалуется ли json.

3. @islanddave Большое вам спасибо за ответ. Я уже отредактировал свой вопрос, пожалуйста, просмотрите его один раз и направьте меня.

4. Я не думаю, что вам нужны квадратные скобки при определении массива. Попробуйте $Update = array(...) вместо $Update[] = array(...) . Хотя я не думаю, что здесь что-то не так, но попробовать стоит.

5. @Jordan скобки необходимы для добавления вложенных массивов в $ Update, эта часть прекрасна.

Ответ №1:

Наконец-то мне удалось разобраться в этом самостоятельно после нескольких мучительных часов, когда мне нужно было просто изменить php-код, как показано ниже, и теперь он отлично работает на моем конце.

 while(($row = mysql_fetch_assoc($result))!== FALSE)
{
    $Update[] = array('Name' => $row['Name'], 
       'Case_Status' => $row['Case_Status'], 
       'Walk_in_ID' => $row['Walk_in_ID']);                 
}
echo json_encode($Update);
  

Спасибо @islanddave за то, что помогли мне достичь этого.