私はしばらくの間これに苦労してきました.どういうわけか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」と表示されます。次のようなことを試してみました。
$data = escape($('#data').val());
リクエストが送信されたときに引用符が存在しないようにするために、どういうわけか ajax リクエストもそれを回避しています。ここで何か不足していますか?
エスケープは気にしませんが、JQuery がこれを行うのはなぜですか?バックグラウンドでエンコード/デコード/エスケープが行われるのはなぜですか?