У меня есть немного загадки. Я делал такой код несколько раз с ожидаемыми результатами, но на этот раз он ведет себя странно.
Текст, поступающий из базы данных 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>
Что еще можно сделать, чтобы устранить эту проблему и устранить появление дополнительных возвратов строки?