所以我使用Javascript和Ajax相对较新,并使用它们将数据提交到数据库进行实时更新,但我注意到当有一个'&&#39 ;输入到我的输入/ textareas中的字符,当我得到该值时,它会在'&'之后切断字符串。
我已经在下面的代码行之后使用alert函数测试了该值,并且完整字符串在那里,但不完全确定如何解决这个问题。
我试图更换'&' &
字符,但无法使其正常工作。这是我用来获取值和我尝试使用的替换。 注意:我使用nicEditor并且必须使用代码的第一行从正确的字段中获取文本,该字段将文本存储在编辑器中。
var boxval = $('#statusContentForum').find('.nicEdit-main').text();
var dataString = 'statusContent='+ boxval;
var dataString = dataString.replace(/&/g, '&');
var dataString = dataString.replace(/\|&;\$%@"<>\(\)\+,/g, "");
并使用这些字符进行测试。
abcdefghijklmnopqrstuvwxyz 1234567890-=`~!@#$%^&*()_+{}[]|\"':;,<.>?/
但它只会产生这个
abcdefghijklmnopqrstuvwxyz 1234567890-=`~!@#$%^
你们有没有遇到过这个?我很感激任何帮助,如果您需要更多代码,请告诉我。我可以提供它。
********* UPDAT完整代码*********
这是完整的代码。
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;
});
});
如果需要,可以使用HTML。
<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>
答案 0 :(得分:2)
您正在手动构建an application/x-www-form-urlencoded
string,但无法正确编码&
。要将&
表示为该格式的数据,您需要将其替换为%26
。
encodeURIComponent
功能会为您完成此操作。
但是,您正在使用jQuery,因此您根本不应该手动执行此操作。传递data
对象而不是字符串。
data: {
statusContent: boxval
},
答案 1 :(得分:1)
我假设您熟悉其他编程语言,甚至可能是关键字或敏感字符。始终记得将其作为解决您问题的首选方法。在这种情况下,就是这样。如果您要为该变量编码字符串,则设置它应该可以正常工作。
尝试控制台记录它。
console.log(encodeURIComponent('My Var: ' + dataString));
更多信息,请参见此处:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent