我有一个简单的 HTML 表单,必须使用 JQuery.ajax 提交。
<form id="myForm" name="myForm" action="mySite/data.php" method="post">
<label for="name">Name: </label>
<input type="text" id="name" name="name" size="30"/>
<label for="text">Text:</label> <br/>
<textarea class="required textarea" cols="60" id="request" name="request" </textarea>
<br/>
<input type="submit" id="submit" name="submit" value="Submit"/>
<input type="reset" value="Clear"/>
</form>
和 JQuery.ajax:
<script type="text/javascript">
var frm = $('#myForm');
frm.submit(function () {
if(frm.valid() == true){
$.ajax({
type: frm.attr('method'),
url: frm.attr('action'),
data: frm.serialize(),
success: function (data) {
alert("Your Request Has Been Received. Thank You.");
}
});
} else {
alert("Please Enter a Valid Request");
}
return false;
});
</script>
表单数据保存到 mySQL 数据库,然后使用更多 JQuery.ajax 显示在另一个页面上。在这些页面和数据库之间,我有 php 页面来读取和写入数据,这里:
switch($_REQUEST['action'])
{
case "submit":
addRequest($_GET['name'], $_GET['content']);
header('Location: myPage.html');
break;
}
if(isset($_POST['request'])){
$content = stripslashes($_POST["request"]);
echo "<h3>Here is the Request You Just Entered: </h3><br/>";
echo "<table width=40%><tr><td style='font-weight:bold;'>Name: </td><td>" . $name . "</td></tr>" . "<tr><td style='font-weight:bold;'>Your Request: </td><td>" . $content . "</td></tr></table>";
$name = addslashes($name);
$content = addslashes($content);
echo "<br/><a style='padding-right:3%;' href='?action=submit&name=" . $name .
"&content=" . $content . "'>Submit Request</a>";
echo "<a href='javascript:history.back()'>Back to the Site</a>";
die();
} else {
echo "No Data Submitted";
}
?>
该页面正确显示了所有内容,但是当我显示发送到我的 addRequest() 函数的信息时,数据没有转义并且会导致问题。
除非文本输入需要转义,否则一切都很好。我已经调试了系统,发现在我使用 JQuery 提交表单数据之前需要对我的字符串进行转义。
我该如何正确地做到这一点,或者我的问题有什么不同?我在这里先向您的帮助表示感谢。