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 标准。在本例中,最好将事件绑定到提交表单事件并使用&lt;form&gt; 标签。

【讨论】:

【参考方案2】:

确保您始终通过encodeuricomponent传递您的内容

所以你的代码是var x = encodeURIComponent($("textarea").val());

【讨论】:

这个答案和我的有什么不同? :> 我们同时回答,我来的时候没有回答

以上是关于Textarea 不接受和 & 同时使用 ajax 和 php 保存页面内容的主要内容,如果未能解决你的问题,请参考以下文章

Ctrl+Enter jQuery 在 TEXTAREA

Javafx 不接受文本字段的 textArea 中的其他字体或语言

textarea 上的 nl2br 和 htmlentities

2种textarea值[重复]

IE 不允许我使用 javascript 设置 textarea 值

JavaFX TextArea 接受负小数