0

我有一个简单的 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 提交表单数据之前需要对我的字符串进行转义。

我该如何正确地做到这一点,或者我的问题有什么不同?我在这里先向您的帮助表示感谢。

4

2 回答 2

0

这是一个在 Jquery 中转义的函数:

function addslashes(string) {
return string.replace(/\\/g, '\\\\').
    replace(/\u0008/g, '\\b').
    replace(/\t/g, '\\t').
    replace(/\n/g, '\\n').
    replace(/\f/g, '\\f').
    replace(/\r/g, '\\r').
    replace(/'/g, '\\\'').
    replace(/"/g, '\\"');
}
于 2013-07-26T21:12:28.863 回答
0

您不需要在 jQuery 中转义任何内容,因为.serialize()它会正确编码所有内容。

但是,在锚标记中创建 URL 时需要进行 URL 编码:

echo "<br/><a style='padding-right:3%;' href='?action=submit&name=" . urlencode($name) . 
     "&content=" . urlencode($content) . "'>Submit Request</a>";
于 2013-07-26T21:34:07.037 回答