ajax请求从post变量中删除一些文本

时间:2017-03-04 04:59:42

标签: javascript php jquery

我有一个表单通过ajax调用向数据库提交文章。 表格只有2个字段标题和文章文本。 我在我的文本区域使用tinymce编辑器。 当我从记事本中剪切文本并将其放入文本编辑器并使用ajax作为post数组将文本发送到服务器时,问题就出现了。

post数组删除了一些文本,我确定它不是数据库问题,因为我在文本插入数据库之前警告文本,文本仍然缺失。因此,当我通过ajax发送文本时,错过的文本就会发生了,错过了它。

这是文字

“使用和访问ISCN网站的条款” 本网站www.iscnsystem.org(“网站”)是一个服从国际标准制定机构(ISE)的互联网网站,有能力为证书和文件提供统一的全球代码,作为对互联网社区的服务。

使用本网站即表示您同意遵守本网站使用条款,条件和隐私政策(“使用条款”)和ISE隐私政策(“隐私政策”)。如果您不同意使用条款或隐私政策,请不要使用本网站。“

当我通过javascript打印它完成时我使用ajax并将其发送到php然后将其返回到javascript它将是这样的:

“使用和访问ISCN网站的条款” 本网站www.iscnsystem.org“

缺少另一部分

任何想法????

代码: ajax请求:

$("#submit_par1").click(function() {
    pass = 1;
    if(!$("#titlepar1").val()) {
        pass = 0;
        $("#titlepar1_error").val("required");
    }
    if(!tinyMCE.activeEditor.getContent()) {
        pass = 0;
        $("#textpar1_error").val("required");
    }

    if(pass==1) {
        var values = $("#par1_form").serialize();
        var tiny = tinyMCE.activeEditor.getContent();

        $.ajax({
            type: "POST",
            url: "php/functions.php",
            dataType:"text",
            data: "tag=update_article&fortext="+tiny.stripSlashes()+"&" + values,
            success: function (data) {
                alert(data);
                if(data.mess=="success") {
                    alert(tiny);
                    alert("saved");
                } else {
                    alert(data.error);
                }
            },
            error: function (xhr, ajaxOptions, thrownError) {
                console.log(xhr.responseText);
            }
        });
    }
})

用于处理请求的php函数:

function update_article($dbh) {
    $data = array();
    $text = preg_replace('/<!--.*?--\>/','',$_POST['fortext']);
    $title = $_POST['titlepar1'];
    $id = $_POST['article_id'];

    $sql = "UPDATE pargs SET title=:title,text=:text WHERE id=:id";
    $stmt = $dbh->prepare($sql);
    $stmt->bindParam(":title",$title);
    $stmt->bindParam(":text",$text);
    $stmt->bindParam(":id",$id);
    if($stmt->execute()) {
        $data['mess'] = "success";
    } else {
        $data['mess'] = "fail";
        $data['desc'] = implode(' - ',$stmt->errorInfo()); 
    }
    echo $text;
}

2 个答案:

答案 0 :(得分:0)

您可以在要停止执行的位置使用debugger;关键字,并尝试查找会发生的情况。或者使用console.log(data);

希望这有帮助。

答案 1 :(得分:0)

我在你的文字中看到很多特殊的字符,可能是第一个&#39;(&#39;网站&#34;)杀死了你想要传递的字符串?

我尝试了以下代码并传递了完整的文本。

<?php
if(!empty($_POST['textinput'])){
  $testtext = $_POST['textinput'];
  echo $testtext;    
}

echo("<form role='form' method='post' action='".$_SERVER['PHP_SELF']."'>"); 
echo("<textarea name='textinput' cols='50' rows='5'></textarea>");
echo("<button type='submit'>Send</button>");
echo("</form>");  
?>
// PHP version 7.1.2