1

基本的に、ユーザーが保存をクリックすると関数を呼び出します。この関数はテキストエリアからコンテンツを取得し、データベースに追加するphpファイルに渡します。私が使用する js 関数がいくつかあります。1 つはコンテンツを切り替えるためのもので、もう 1 つは保存するためのものです。とにかく、テキストエリアで何も編集せずに保存をクリックすると、すべて正常に動作します。ただし、何らかの方法でテキストを編集すると (文字を削除して再度追加しても)、機能の一部が機能しなくなります。コンテンツの変更を担当する部分。動作しなくなった部分に印を付けました。

I have tested to see whether it was the content I was passing.. it was not. Now it seems like the textarea itself gets messed up and wont show new information. I tested it by putting 2 textareas, one that holds the content to be stored and is edited, and another just to display changes (changes which stop working on the main text area).

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);
}​
4

1 に答える 1

0

与えられたコメントで問題が解決しない場合は、何に取り組むべきかいくつかの提案をしてください。

まず、おそらく問題は、大文字の C で content 変数を使用していること、またはおそらくそれがここにあることです。しかし、クロムは未定義の変数で 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);
});
于 2012-05-01T19:20:10.703 に答える