Javascript值在'之后被切断&';性格
因此,我对Javascript和Ajax比较陌生,并使用它们将数据提交到数据库进行实时更新,但我注意到,当输入/文本区域中输入了一个“&”字符时,当我获得该值时,它会将“&”后面的字符串切断 我已经在下面的代码行之后使用alert函数测试了该值,完整的字符串在那里,但不确定如何修复 我试图用Javascript值在'之后被切断&';性格,javascript,ajax,Javascript,Ajax,因此,我对Javascript和Ajax比较陌生,并使用它们将数据提交到数据库进行实时更新,但我注意到,当输入/文本区域中输入了一个“&”字符时,当我获得该值时,它会将“&”后面的字符串切断 我已经在下面的代码行之后使用alert函数测试了该值,完整的字符串在那里,但不确定如何修复 我试图用替换“&”字符&但无法使其工作。下面是我用来获取值和尝试使用的替换。注意:我使用的是nicEditor,必须使用代码的第一行从编辑器中存储文本的适当字段中获取文本 你们中有人以前遇到过这种情况吗?我非常
替换“&”字符&代码>但无法使其工作。下面是我用来获取值和尝试使用的替换。注意:我使用的是nicEditor,必须使用代码的第一行从编辑器中存储文本的适当字段中获取文本
你们中有人以前遇到过这种情况吗?我非常感谢您的帮助,如果您需要更多的代码,请告诉我。我可以提供
*********更新完整代码*********
这是完整的代码
JS/AJAX:
$(function() {
//Update Message...
$(".update_button").click(function() {
//var boxval = $("#statusContent").val();
var boxval = $('#statusContentForum').find('.nicEdit-main').text();
var dataString = 'statusContent='+ boxval;
//var dataString = dataString.replace(/>/g, '>');
//var dataString = dataString.replace(/</g, '<');
var dataString = dataString.replace(/&/g, '&');
var dataString = dataString.replace(/\|&;\$%@"<>\(\)\+,/g, "");
if(boxval=='') {
alert("Please Enter Some Text");
} else {
$("#flash").show();
$("#flash").fadeIn(400).html('<img src="images/ajax-loader.gif" align="absmiddle"> <span class="loading">Loading Comment...</span>');
// alert(dataString);
// throw new Error("Something went badly wrong!");
$.ajax({
type: "POST",
url: "ajax/statusPost.php",
data: dataString,
cache: false,
success: function(html){
$("ol#update").prepend(html);
$("ol#update li").slideDown("slow");
var clearVal = nicEditors.findEditor("statusContent");
clearVal.setContent("");
$("#flash").hide();
}
});
} return false;
});
});
$(函数(){
//更新消息。。。
$(“.update_按钮”)。单击(函数(){
//var-boxval=$(“#statusContent”).val();
var-boxval=$(“#statusContentForum”).find(“.nicEdit main”).text();
var dataString='statusContent='+boxval;
//var dataString=dataString.replace(/>/g',);
//var dataString=dataString.replace(/您正在手动构造,但未正确编码&
。要将&
表示为该格式的数据,需要将其替换为%26
encodeURIComponent
函数将为您完成此操作
但是,您使用的是jQuery,因此根本不应该手动执行。请传递对象而不是字符串
data: {
statusContent: boxval
},
我假设您熟悉其他编程语言,甚至可能熟悉关键字或敏感字符。请始终记住,将其作为解决问题的第一个解决方案。在这种情况下,就是这样。如果您为该变量编码字符串,您正在设置它,它应该可以正常工作
尝试用控制台记录它
console.log(encodeURIComponent('My Var: ' + dataString));
更多信息,请参见此处:问题可能是您试图将字符串格式化为HTML格式,而不是通过HTTP发送字符串所使用的任何格式…但是您没有提供尝试通过HTTP发送字符串的代码。我将在另一个答案中为您提供完整的代码。我没有想到这一点。Lol不要回答问题提供有关问题的更多详细信息。改为编辑问题。若要向问题添加更多信息,或以任何方式对其进行编辑,只需单击问题标签下方的链接。您无需发布“其他答案”(或问题)。如果您发布答案以提供澄清,则会将其标记为“非答案”和/或被否决。发布另一个问题(不首先关闭此问题)将导致其中一个问题作为重复问题关闭。两个问题都有(当然是次要问题)惩罚。我真的很感谢你的帮助。我正在努力学习和理解每件事,但同时我不想用问题纠缠你,但我如何应用数据:{你建议的一部分?我只是把它放在var dataString所在的地方吗?@logicK-你只是把它放在data:dataString
所在的地方,然后去掉所有与dataString
相关的东西。我想我做错了什么。我无法让它正常工作,并尝试在谷歌上搜索“javascript将数据传递给一个对象”,你能给我举个例子吗?你只是用我答案中的三行替换了我评论中的那一行。很遗憾,我无法让它工作。::我确实让encodeURIComponent工作了。
$(function() {
//Update Message...
$(".update_button").click(function() {
//var boxval = $("#statusContent").val();
var boxval = $('#statusContentForum').find('.nicEdit-main').text();
var dataString = 'statusContent='+ boxval;
//var dataString = dataString.replace(/>/g, '>');
//var dataString = dataString.replace(/</g, '<');
var dataString = dataString.replace(/&/g, '&');
var dataString = dataString.replace(/\|&;\$%@"<>\(\)\+,/g, "");
if(boxval=='') {
alert("Please Enter Some Text");
} else {
$("#flash").show();
$("#flash").fadeIn(400).html('<img src="images/ajax-loader.gif" align="absmiddle"> <span class="loading">Loading Comment...</span>');
// alert(dataString);
// throw new Error("Something went badly wrong!");
$.ajax({
type: "POST",
url: "ajax/statusPost.php",
data: dataString,
cache: false,
success: function(html){
$("ol#update").prepend(html);
$("ol#update li").slideDown("slow");
var clearVal = nicEditors.findEditor("statusContent");
clearVal.setContent("");
$("#flash").hide();
}
});
} return false;
});
});
<form name="newstatus" id="statusContentForum" action="profile.php" method="post" class="commentForm">
<textarea name="statusContent" id="statusContent" placeholder="What's on your mind?"></textarea>
<input type="submit" value="Update" name="submit" class="update_button"/>
</form>
data: {
statusContent: boxval
},
console.log(encodeURIComponent('My Var: ' + dataString));