JQuery Ajax Mysql извлечение данных с получением дополнительных возвратов каретки и появлением в текстовой области - PullRequest
0 голосов
/ 16 марта 2020

У меня есть немного загадки. Я делал такой код несколько раз с ожидаемыми результатами, но на этот раз он ведет себя странно.

Текст, поступающий из базы данных Mysql через AJAX в основную вызывающую программу, получает 3 дополнительных возврат каретки или строки, и каждый раз, когда я его отображаю, он добавляет эти нежелательные возвраты строки в поле textarea для дальнейшего редактирования.

Шаги: 1. Сохраните содержимое textarea в базе данных. Примером данных могут быть: «Лиса прыгнула высоко» 2. Получите данные и отобразите их в другом текстовом поле для редактирования 3. Текстовое поле показывает полученный текст, но имеет дополнительные 3 строки возврата.

My Storage Call: Основная программа

$(document).on('click', '#submit2', function(){
        event.preventDefault();
        var comment = $("#comment2x").val();        
        update = 'yes'//chooses to update not insert new
        console.log(comment);
        $.ajax({
                url:"/modules/feedback/feedback_ajax.php",
                method:"POST",
                data:{action:'save',
                      user_id:user_id,//global variable set at beginning
                      comment:comment,
                      details:details,
                      tab:tab,
                      update:update,
                      feedback_id:feedback_id
                  },
                success:function(data){;
                      //console.log(data);
                      $('#comment2x').val('');//clear text area
                      $(window).scrollTop(scroll_position);
                }
            }); 
     });

Код обновления SQL: feedback_ ajax. php

if($_POST['action']=='save'){   
    $user_id = $_POST['user_id'];
    $comment = $_POST['comment'];
    $details = $_POST['details'];
    $tab = $_POST['tab']; 
    $update = $_POST['update'];//'yes' = update existing entry, 'no' = insert new entry
    $feedback_id = $_POST['feedback_id'];

    //insert into database    
    $sql = "INSERT INTO feedback (user_id,comment,details,tab,status) VALUES (?,?,?,?,?)";
    $db->prepare($sql)->execute([$user_id,$comment,$details,$tab,'New']);

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

Мой AJAX Вызов: основная программа

$.ajax({//get raw comment from database
    url:"/modules/feedback/feedback_ajax.php",
    method:"POST",
    data:{action:'get_raw_comment',feedback_id:feedback_id},
    success:function(data){
        console.log('EDIT');
        console.log(data);
        $('#comment2x').val(data);
        $("#comment2x").height( $("#comment2x")[0].scrollHeight );//adjusts height of textarea to fit text
    }
});

Другой конец возвращает данные: feedback_ ajax. php

if($_POST['action']=='get_raw_comment'){   
    $feedback_id = $_POST['feedback_id'];
        $sql = "SELECT comment FROM feedback WHERE feedback_id=".$feedback_id;
        $stmt = $db->prepare($sql); 
        $stmt->execute(); 
        $row = $stmt->fetch();
        $comment = $row['comment'];
        echo $comment;
}

I используйте Xdebug, а переменная $ comment не показывает никаких лишних пробелов или возвращаемых строк.

В вызове Ajax console.log (data); показывает возвращенные данные - консоль Chrome показывает дополнительные строки возвращаемых !!!

Когда AJAX успешно вызывает $ ('# comment2x'). val (data); помещает его в текстовую область, текстовая область показывает дополнительные возвраты строки - 3, если быть точным.

HTML для текстовой области:

<textarea class="form-control" name="article" id="comment2x"></textarea>

Что еще можно сделать, чтобы устранить эту проблему и устранить появление дополнительных возвратов строки?

Ответы [ 2 ]

0 голосов
/ 16 марта 2020

Просто подумал, что выложу свою Json версию, которая решит проблему:

Mysql код поиска данных:

if($_POST['action']=='get_raw_comment'){   
    $result = array();
    $feedback_id = $_POST['feedback_id'];    
        $sql = "SELECT comment FROM feedback WHERE feedback_id=".$feedback_id;
        $stmt = $db->prepare($sql); 
        $stmt->execute(); 
        $row = $stmt->fetch();
        $comment = $row['comment'];
        $result['comment']=$comment;
        echo json_encode($result);
}

Ajax код:

$.ajax({//get raw comment from database
    url:"/modules/feedback/feedback_ajax.php",
    method:"POST",
    dataType: 'json',
    data:{action:'get_raw_comment',feedback_id:feedback_id},
    success:function(data){
        console.log(data);               
        $('#comment2x').val(data.comment);
        $("#comment2x").height( $("#comment2x")[0].scrollHeight );//adjusts height of textarea to fit text
    }
});
0 голосов
/ 16 марта 2020

возвращает данные из feedback_ ajax. php в формате json следующим образом: -

$result = array();
if($_POST['action']=='get_raw_comment'){   
    $feedback_id = $_POST['feedback_id'];
        $sql = "SELECT comment FROM feedback WHERE feedback_id=".$feedback_id;
        $stmt = $db->prepare($sql); 
        $stmt->execute(); 
        $result['success'] =  $stmt->rowCount();
        if($result['success'])
          $row = $stmt->fetch();

        $result['comment'] = $result['success'] ? $row['comment'] : ""; 
}
echo json_encode($result);

принимает данные в формате json и продолжает

$.ajax({//get raw comment from database
    url:"/modules/feedback/feedback_ajax.php",
    method:"POST",
    dataType: 'json',                         //IMPORTANT TO RECEIVE DATA IN JSON
    data:{action:'get_raw_comment',feedback_id:feedback_id},
    success:function(data){
      if(data.success)
       {
          $('#comment2x').val(data.comment);
          $("#comment2x").height( $("#comment2x")[0].scrollHeight );//adjusts height of textarea to fit text
       }else
       {
          console.log(data);  //to check what data coming
       }


    }
});
...