我已经为此挣扎了一段时间,不知何故JQuery正在转义文本上的引号,这没关系,但当字符串显示给用户时,我希望显示为用户编写的字符串,下面是简化的代码:
测试。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''"I尝试过类似以下内容:
$data = escape($('#data').val());
为了避免在发送请求时出现引号,但不知何故,ajax请求也在逃避,我是不是遗漏了什么?
我不介意转义,但JQuery为什么要这样做,为什么这种编码/解码/转义的事情发生在后台?
stripslashes
可能是您需要的工具,但在删除斜杠之前,请确保测试是否启用了魔术引号。
如果你把代码传输到一个有不同配置的新系统,那么你会花很长时间来追踪它。。
if (get_magic_quotes_gpc()) {
// Do your stripslashes here.
}
http://php.net/manual/en/function.get-magic-quotes-gpc.php
我认为是服务器使用stripslashes
添加这些斜杠(通过魔术引号)来删除它们
echo stripslashes($data);
或者最好关闭
正如@jeremyjstarcher建议的那样,在条纹斜杠之前,检查一下魔术引号是否打开
if (get_magic_quotes_gpc()) {
$data = stripslashes($data);
}