用jQuery发布的AJAX数据包含引号?

时间:2012-09-05 21:46:41

标签: php javascript jquery

我一直在努力解决这个问题,不知怎的,JQuery正在逃避文本上的引号,这没关系,但是当用户显示字符串时我希望在用户编写时显示,这里是简化代码:

test.php的

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
    <title></title>
    <meta http-equiv="content-type" content="text/html;charset=utf-8" />
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
</head>
<body>
    <form id="testform" action="testoutput.php" method="post">
        <input type="text" name="data" id="data" />
        <input type="submit" />
    </form>

    <div name="output" id="output"><b>The Output</b></div>

<script>
$(document).ready(function() {
    $('#testform').submit(function () {
        $data = $('#data').val();
        $.ajax({
            url: 'testoutput.php', 
            type: 'POST',
            data: "data=" + $data,
            success: function(response) {
              $('#output').html(response); 
            }
          });
        return false;
    });
});
</script>

</body>
</html>

testoutput.php

<?php
    $data = $_POST['data'];

    echo $data;
?>

现在,如果我在表格中写了“Ok”,输出会显示 \“Ok \”我尝试过这样的事情:

$data = escape($('#data').val());

为了避免在发送请求时甚至存在引号,但是ajax请求也在某种程度上逃避了,我在这里错过了什么?

我不介意逃避,但为什么JQuery会这样做,为什么这个编码/解码/转义事件会在后台发生?

2 个答案:

答案 0 :(得分:1)

我认为服务器添加这些斜杠(通过magic quotes)删除它们使用stripslashes

echo stripslashes($data);

或者更好的是关闭它

正如@jeremyjstarcher建议检查在条带斜线之前看到魔术引号

if (get_magic_quotes_gpc()) {
    $data = stripslashes($data);
}

答案 1 :(得分:1)

stripslashes可能是您需要的工具,但请确保在删除斜线之前测试魔术引号。

如果您将代码传输到具有不同配置的新系统,那么您将有时间跟踪它...

if (get_magic_quotes_gpc()) {
    // Do your stripslashes here.
}

http://php.net/manual/en/function.get-magic-quotes-gpc.php