Jquery表单提交丢失表单数据

时间:2015-04-11 18:47:35

标签: javascript php jquery forms

我有这个表格,它应该将信息发送到数据库进行用户名搜索。我正在为学生宿舍里的私人服务器提供搜索功能。我们有一个用户名<lol>的家伙,似乎我们无法搜索他。其他用户名搜索就好了。我错过了什么?

这是form.php文件:

<!DOCTYPE html>
<html>
<head>
<script src="//code.jquery.com/jquery-1.11.2.min.js"></script>
<script src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script src="//cdn.jsdelivr.net/jquery.validation/1.13.1/jquery.validate.js"></script>
<script src="//cdn.jsdelivr.net/jquery.validation/1.13.1/jquery.validate.min.js"></script>
<script src="//cdn.jsdelivr.net/jquery.validation/1.13.1/additional-methods.js"></script>
<script>

  $(document).ready(function() {
    $('#checkForm').validate({
    rules: {
    IpSearch: {
    ipv4:true,
    require_from_group: [1, ".required_group"]
    },
    UserName: {
    minlength: 3,
    require_from_group: [1, ".required_group"]
    }
    },
    submitHandler: function(form) {
    console.log( $("#checkForm").serialize());
    $('#results').text( $("#checkForm").serialize());
    $.post('file.php', $("#checkForm").serialize(), function(data) {
    $('#checkResult').html(data);

    });
    }
    });
   });
</script>
</head>
<body>


                    <form role="form" id="checkForm" name="checkForm" method="post">
                       <div class="form-group">
                          <label>Internal IP:</label>
                          <input id="IpSearch" name="IpSearch" placeholder="Enter IP" class="form-control optional required_group" type="text">
                       </div>
                       <div class="form-group">
                          <label>Username</label>
                          <input id="UserName" name="UserName" value="<?php if(!empty ($_POST) && isset($_POST['checkThis'])){echo $_POST['checkThis']; } else{}?>" placeholder="admin" class="form-control optional defaultInvalid required_group" type="text">
                       </div>
                       <button id="search" name="search" value="doSearch" class="btn btn-info">Search</button>
                    </form>


<div id="results"></div>
<div id="checkResult"></div>

</body>
</html>

这是file.php的开头:

<?php
echo "<pre>";
var_dump($_POST);
echo "</pre>";
// .... continues but irrelevant since I'm not getting any post data

点击按钮后,我在浏览器控制台中看到了这个:

"IpSearch=&UserName=%3Clol%3E&search=doSearch"

在#results上我得到:     IpSearch =安培;用户名=%3Clol%3E&安培;搜索= doSearch

在#checkResult上我得到了:

array(3) {
  ["IpSearch"]=>
  string(0) ""
  ["UserName"]=>
  string(5) ""
  ["search"]=>
  string(8) "doSearch"

}

2 个答案:

答案 0 :(得分:0)

尝试vardumping $ _GET
    var_dump($_GET)
并在此处发布结果:)

看起来您的脚本不会阻止默认操作,并且表单仍然会被提交

答案 1 :(得分:0)

它没有显示<lol>因为它在jquery打印时考虑了HTML标记。

你必须在打印之前转义html实体。

所以更改此行:$('#checkResult').html(data);改为$('#checkResult').text(data);

因此,这将打印<lol>作为文字而不是html