2011-07-12 28 views
5

Tôi đang tạo một ứng dụng web nhỏ cho phép người dùng gửi nội dung html, css và javascript qua Ace Editor. Trong trình soạn thảo này, việc lặp lại nội dung được lưu trữ vào trình soạn thảo chỉ đơn giản là đủ, tuy nhiên tôi không thể tìm thấy cách nào để gửi đầu vào của người dùng tới cơ sở dữ liệu. Tôi có thể thấy có một textarea được tạo ra bởi các JavaScript tuy nhiên tôi không chính xác chắc chắn những gì nó đang làm, làm thế nào để có được nó hoặc nếu tôi nên tìm kiếm cái gì khác hoàn toàn.Trình chỉnh sửa Ace trong PHP Web App

Tôi chủ yếu tìm kiếm một trường hoặc thứ gì đó mà tôi có thể sử dụng để gửi php vào db.

Trả lời

14

Nội dung của cửa sổ chỉnh sửa có sẵn với phương thức getValue phiên. Ví dụ: đây là phần mở rộng cho bản demo ACE tiêu chuẩn để lưu tệp:

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

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

Tôi đã thêm lệnh saveFile vào "Fake Fake" đã có trong demo.js. Tôi thay thế các cảnh báo với mã như thế này:

// 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(); 
    } 
}); 

tập tin Các php chỉ là một dòng:

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

+0

Hi @ Dave Xem các cập nhật cho câu trả lời của tôi –

+1

đó là đẫm máu rực rỡ. Cảm ơn bạn. Tôi có ba biên tập viên trên cùng một trang vì vậy tôi đã có thể thấy cách tôi có thể sử dụng mã bưu điện AJAX mà bạn đã cung cấp để phân biệt chúng. 'var htmlContents = env.htmlEditor.getSession(). GetValue(); var cssContents = env.cssEditor.getSession(). GetValue(); var jsContents = env.jsEditor.getSession(). GetValue(); ' Rõ ràng tôi cũng phải thay đổi nội dung: phần nội dung. Cảm ơn bạn, bạn rất tuyệt! –

+0

Hi @Paul, Có cách nào để thực hiện điều này mà không cần AJAX Post không? –

Các vấn đề liên quan