2011-07-12 178 views
5

我正在製作一個小型的網絡應用程序,允許用戶通過Ace Editor提交html,css和javascript內容。在這個編輯器中,將存儲的內容回顯到編輯器中就足夠了,但我無法找到將用戶輸入提交到數據庫的方法。我可以看到有一個由JavaScript生成的textarea,但我不完全確定它在做什麼,如何得到它,或者如果我應該完全尋找其他東西。PHP Web App中的王牌編輯器

我主要是在尋找一個領域或我可以用來讓php提交到數據庫的東西。

回答

14

編輯窗口的內容可用於會話getValue方法。例如,這裏是一個可擴展標準ACE演示用於保存文件:

saveFile = function() { 
    var contents = env.editor.getSession().getValue(); 

    $.post("write.php", 
      {contents: contents }, 
      function() { 
        // add error checking 
        alert('successful save'); 
      } 
    ); 
}; 

我加入了saveFile的調用已經存在的「假保存」,也就是在demo.js.我用的代碼替換警報這樣的:

// Fake-Save, works from the editor and the command line. 
canon.addCommand({ 
    name: "save", 
    bindKey: { 
     win: "Ctrl-S", 
     mac: "Command-S", 
     sender: "editor|cli" 
    }, 
    exec: function() { 
     saveFile(); 
    } 
}); 

php文件只有一行:

$r = file_put_contents("foo.txt", $_POST["contents"]) or die("can't open file");

+0

喜@戴夫見更新我的回答 –

+1

是血腥的輝煌。謝謝。我在同一頁面上有三個編輯器,所以我已經可以看到如何使用您提供的AJAX郵政編碼區分它們。 'var htmlContents = env.htmlEditor.getSession()。getValue(); var cssContents = env.cssEditor.getSession()。getValue(); var jsContents = env.jsEditor.getSession()。getValue();' 顯然我也必須改變content:contents部分。 謝謝,你真棒! –

+0

嗨@Paul,有沒有辦法做到這一點沒有AJAX Post? –