JQuery Ajax Mysql 数据检索得到额外的回车 returns 并出现在 textarea 中
JQuery Ajax Mysql data retrieval getting extra carriage returns and appearing in textarea
我有点不解。我已经多次完成类似的代码并取得了预期的结果,但这次它表现得很奇怪。
从 Mysql 数据库通过 AJAX 到主调用程序的文本得到 3 个额外的回车符或行 returns 并且每次我显示它时,它都会添加这些不需要的行 returns 到文本框以进一步编辑。
步骤:
1.将textarea内容存入数据库。示例数据可以是:'The fox jumped high'
2.检索数据并显示在另一个textarea框中进行编辑
3. textarea 显示检索到的文本,但有额外的 3 行 returns.
我的存储调用:主程序
$(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 查看数据库,没有显示额外的空格或行 returns。
我的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;
}
我使用 Xdebug,变量 $comment 显示没有多余的空格或行 returns.
在Ajax调用中,console.log(数据);显示返回的数据 - Chrome 控制台显示额外的行 returns!!!
当AJAX成功调用$('#comment2x').val(data);将它放在文本区域中,文本区域显示额外的行 returns - 3 是准确的。
文本区域的 HTML 是:
<textarea class="form-control" name="article" id="comment2x"></textarea>
我还能做些什么来解决这个问题并消除这些额外的行 returns 出现?
return 来自 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
}
}
});
只是想 post 我的 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
}
});
我有点不解。我已经多次完成类似的代码并取得了预期的结果,但这次它表现得很奇怪。
从 Mysql 数据库通过 AJAX 到主调用程序的文本得到 3 个额外的回车符或行 returns 并且每次我显示它时,它都会添加这些不需要的行 returns 到文本框以进一步编辑。
步骤: 1.将textarea内容存入数据库。示例数据可以是:'The fox jumped high' 2.检索数据并显示在另一个textarea框中进行编辑 3. textarea 显示检索到的文本,但有额外的 3 行 returns.
我的存储调用:主程序
$(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 查看数据库,没有显示额外的空格或行 returns。
我的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;
}
我使用 Xdebug,变量 $comment 显示没有多余的空格或行 returns.
在Ajax调用中,console.log(数据);显示返回的数据 - Chrome 控制台显示额外的行 returns!!!
当AJAX成功调用$('#comment2x').val(data);将它放在文本区域中,文本区域显示额外的行 returns - 3 是准确的。
文本区域的 HTML 是:
<textarea class="form-control" name="article" id="comment2x"></textarea>
我还能做些什么来解决这个问题并消除这些额外的行 returns 出现?
return 来自 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
}
}
});
只是想 post 我的 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
}
});