【发布时间】:2012-03-21 13:00:50
【问题描述】:
我正在创建一个类似http://c9.io 的服务,以便在浏览器上编辑我服务器上的 .php 文件。
我在那里实现了 CodeMirror 编辑器。 编辑器如下:http://codemirror.net/mode/php/index.html
我的问题是我无法通过 jQuery.ajax POST 发送带有 php 代码的数据。
假设我想将以下几行保存到 hello.php:
<?php
require_once("lukujA.php");
?>
我正在使用以下 js / jquery 代码来保存文件:
$(".save-file").click(function (){
var content = editor.getValue(); //textarea text
var path = "hello.php";
//following line shows content-data as it shows on CodeMirror editor
//confirm box without any quotes / slashes / and with every linebreak
var response = confirm("Do you want to save? DATA: " + content);
if(response)
{
$.ajax({
type: "GET",
url: "saveFile.php",
data: "content="+content+"&path="+path+"",
success: function(){
alert("File saved!");
}
});
}
else{
alert("File not saved!");
}
});
保存文件.php:
$path = $_GET['path'];
$content = $_GET['content'];
if($path !== "" and is_writable($path))
file_put_contents($path, $content);
上面的代码输出 hello.php 如下所示(在一行上并带有斜杠)(使用 POST 似乎删除了我在编辑器上所做的任何换行符):
<?php require_once(\"lukujA.php\"); ?>
我不能在 saveFile.php 上使用stripslashes($content);,因为如果我有这样的 php 代码:
<?php echo "<input type=\"text\" name=\"foo\">"; ?>
strip_slashes 将删除那些斜线,代码在执行时将变为无效。
我应该如何遇到这种情况以及如何将新代码保存到文件中? 你会怎么做这样的编辑器?
谢谢
【问题讨论】:
-
为什么不能通过 AJAX 帖子发送 php 代码?如果是从textarea发送的应该没问题
-
我认为使用 jquery ajax 或直接 ajax 发送它并不重要。是后期操作本身搞砸了我的输出(我认为)
-
我在发送格式化代码时从来没有遇到过问题。
-
我想我应该尝试使用 jquery.cookie 创建 cookie,获取随它一起传递的内容并使用 $_Cookie 在 saveFile.php 上接收它。那天晚上的工作。我应该尝试我醒来的下一件事
-
祝你好运,无法在 cookie 中存储很多内容,而 ajax 确实有效
标签: php jquery codemirror