所以我在网站上有一个非常简单的表单,它完全基于 AJAX 来加载其页面。这个表单工作的唯一方法是让它也做一些 AJAX 魔术,所以我着手去做。我对表格进行了测试,所以我知道它一切正常。
这是我的表单的 javascript。 变量“fullpath”只是告诉我当前加载的是哪个页面,所有页面都存储在本地“pages”目录中。 它序列化表单并将其发送到服务器,并带有一些调试警报。
$(document).ready(function() {
$("#regForm").submit(function(event) {
alert($(this).serialize());
$.post("pages/" + fullpath, $(this).serialize(), function(data){
alert(data);
});
return false;
});
});
这是表单本身
<form name="input" id="regForm">
<div class="form-field"><label>Username</label> <input type="text" name="username"/></div>
<div class="form-field"><label>Password</label> <input type="password" name="password"/></div>
<div class="form-field"><label>Confirm Password</label> <input type="password" name="password2"/></div>
<div class="form-field"><label>Screen Name</label> <input type="text" name="screenname"/></div>
<div class="form-field"><label>Email Address</label> <input type="text" name="address"/></div>
<div class="form-field"><label>Group</label> <select name="usergroup">
<option value="0">Superuser</option>
<option value="1">Admin</option>
<option value="2">Moderator</option>
<option value="3">Advmember</option>
<option value="4">Member</option>
<option value="5">Guest</option>
</select> <br />
<label>Submit: </label><input type="submit" value="Submit" />
</div>
</form>
这是我放在页面开头的一些 PHP
print_r($_POST);
所以我在表格中填写了一些虚假信息,然后按提交。所有的数据都显示在
alert($(this).serialize());
然后调用成功,我看到了加载的表单
alert(data);
但是,我要求在 PHP 中打印 $_POST 数组,这就是我得到的全部内容
Array ()
所以 jQuery 正在发送数据,它正在取回页面,但出于某种原因,POST 变量没有通过。有人愿意伸出援手吗?
最佳答案
这适用于 a Fiddle .
您确定 fullpath
是全局定义的吗?我没有在您的代码中看到任何其他可能的错误来源。
编辑:我可以从您的评论中看出实际问题:301 重定向 don't work through POST :
如果在响应 GET 或 HEAD 以外的请求时收到 301 状态代码,用户代理不得自动重定向请求,除非它可以被用户确认,因为这可能会改变条件请求已发出。
你需要删除这个重定向的东西,所以 "pages/"+ fullpath
直接指向 PHP 脚本。这也可能是您的服务器配置有问题。
如果是 Apache,您可能还想看看 this SO question .
关于javascript - jQuery 不发送 POST 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8774605/