Textarea 不接受和 & 同时使用 ajax 和 php 保存页面内容
Posted
技术标签:
【中文标题】Textarea 不接受和 & 同时使用 ajax 和 php 保存页面内容【英文标题】:Textarea not accepting and & whille saving pages content using ajax and php 【发布时间】:2013-06-29 20:05:19 【问题描述】:在使用 AJAX 和 php 保存页面内容时,我的 textarea 不接受  
和 &
。
这是使用带有 ajax 的 textarea 的编辑器页面:
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
function save()
var x = $("textarea").val();
var data = 'c='+x;
$.ajax(
type: 'POST',
url: 'save.php',
data: data,
success: function(e)
$("#s").html(e);
);
</script>
</head>
<body>
<textarea>
<?php
$fn = "blank.html";
//FILE TO BE EDITED (FILENAME EDITABLE)
$file = fopen($fn, "r+"); //OPENS IT
$fr = fread($file, 1000000); //READS IT
fclose($file); //CLOSE CONNECTIONS
echo $fr; //SHOWS THE EDITABLE FILE HERE
?>
</textarea><br>
<input onClick="save()" id="x" type="button" value="Save"><br><br>
<span id="s"></span><br>
<a href="blank.html" target="_new">view file</a>
</body>
</html>
这是save.php
代码:
<?php
$c = $_POST["c"];
//TEXT FROM THE FIELD
$f = 'blank.html';
//FILE TO SAVE (FILENAME EDITABLE)
$o = fopen($f, 'w+'); //OPENS IT
$w = fwrite($o, $c); //SAVES FILES HERE
$r = fread($o, 100000); //READS HERE
fclose($o); //CLOSES AFTER IT SAVES
//DISPLAYS THE RESULTS
if($w)
echo 'File saved';
else
echo 'Error saving file';
?>
【问题讨论】:
【参考方案1】:这是由于 url 编码而发生的。你应该在你的 javascript 参数上使用encodeURIComponent()
。
改变
var x = $("textarea").val();
到
var x = encodeURIComponent($("textarea").val());
您的脚本也可以简化
<script>
$(function ()
$("#x").click(function ()
$.ajax(
type: 'POST',
url: 'save.php',
data: c: encodeURIComponent($("textarea").val())
success: function(e)
$("#s").html(e);
);
);
);
</script>
将输入更改为
<input id="x" type="button" value="Save">
您还应该遵守 html 标准。在本例中,最好将事件绑定到提交表单事件并使用<form>
标签。
【讨论】:
【参考方案2】:确保您始终通过encodeuricomponent
传递您的内容
所以你的代码是var x = encodeURIComponent($("textarea").val());
【讨论】:
这个答案和我的有什么不同? :> 我们同时回答,我来的时候没有回答以上是关于Textarea 不接受和 & 同时使用 ajax 和 php 保存页面内容的主要内容,如果未能解决你的问题,请参考以下文章
Javafx 不接受文本字段的 textArea 中的其他字体或语言
textarea 上的 nl2br 和 htmlentities