基本上,当用户单击保存时,我调用一个函数,这个函数从textarea获取内容并将其传递给一个php文件,然后将其添加到数据库中。我有几个js函数,一个用于在内容之间切换,另一个用于保存内容。无论如何,如果我只是单击保存而不在文本区域中编辑任何内容,那么一切正常。但是,如果我以任何方式编辑文本(甚至删除字母并再次添加),则部分功能将停止工作。负责修改内容的部分。我已经标记了停止工作的部分。
我已经测试了一下,看看它是否是我传递的内容......它不是。现在似乎文本区域本身变得混乱并且不会显示新信息。我通过放置 2 个文本区域对其进行了测试,一个用于保存要存储和编辑的内容,另一个仅用于显示更改(停止在主文本区域工作的更改)。
function saveContent() {
document.getElementById("editing").style.display = 'none';
document.getElementById("observing").style.display = '';
document.getElementById("contentArea").readOnly = true;
if (window.XMLHttpRequest) // code for IE7+, Firefox, Chrome, Opera, Safari
{
xmlhttp = new XMLHttpRequest();
alert("first if");
}
else // code for IE6, IE5
{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
//alert("second if");
}
xmlhttp.onreadystatechange = function() {
//alert(xmlhttp.readyState+" : "+xmlhttp.status);
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
alert("finished");
document.getElementById("contentArea").innerHTML = "working"; < ---- * * THIS PART STOPS WORKING IF I MODIFY THE TEXTAREA IN ANY WAY * *
}
}
//var Content = document.getElementById("contentArea");
var content = "contenttt";
//alert(content);
xmlhttp.open("get", "saveContent.php?q=" + content_id + "&content=" + content, true);
xmlhttp.send(null);
}
如果给出的评论不能解决您的问题,请提出一些工作建议。
首先,也许问题是你正在使用大写字母C的内容变量,或者可能只是在这里。但我知道 chrome 往往会用未定义的变量搞砸 ajax 调用。
//var Content = document.getElementById("contentArea");
var content = "contenttt";
其次,在 POST 中发送文本变量。
xmlhttp.Open("POST","saveContent.php?q=" + content_id, false);
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlhttp.send("content=" + content);
最后,考虑使用 JQuery。它如此受欢迎是有原因的。它易于使用,此类问题很少发生,并且适用于所有已知的浏览器。
$.post('saveContent.php', {"q": content_id, "content": $('#contentArea').val()}, function(data){
alert(data);
});