我希望这不是重复的,但是 jQuery-Ajax-calls 中单引号的所有其他问题都是关于错误,而不是我在这里观察到的。
我有一个 jQuery-Ajax 调用的问题,它在发送的参数中包含一个单引号 - 这些在服务器端总是加倍!我写了一个包含前端和后端的小操场脚本来显示问题:
游乐场.php
<?php
if(isset($_REQUEST["foo"])) { ?>
<root>
<fooVal>
<?php echo $_REQUEST["foo"]; ?>
</fooVal>
</root>
<?php
die;
}
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="jquery-1.7.2.min.js"></script>
<script>
function testSend() {
$.ajax({
type: "get",
url: "playground.php",
data: {"foo" : $("#fooInput").val()},
success: function(data) {
$("#fooResult").text($(data).find("fooVal").text());
}
});
}
</script>
</head>
<body>
<input type="text" id="fooInput" />
<a href="javascript:testSend()">send</a>
<div id="fooResult"></div>
</body>
</html>
例如,如果我输入输入字段:
L'eclisse
div#fooResult 在 AJAX 调用之后包含:
L''eclisse
所以不知何故,脚本从一个中提取了两个单引号。用萤火虫检查,我看到参数只用一个单引号正确发送。但答案总是包含其中两个,无论我是输出(在脚本顶部的 PHP 部分)还是通过 json_encode 或简单的回显。
我已经尝试过的:
- 使用
encodeURI(($"#fooInput").val())
- 没有变化 - 使用
encodeURIComponent(($"#fooInput").val())
- 没有变化 - 使用
escape($("#fooInput").val())
- 这将输出 L%27eclisse
有没有人有建议,我可以做什么?是在客户端(javascript)端还是在脚本的服务器(php)端?提前致谢!