更新2:我发现了什么问题! .htaccess文件中有301重定向。一旦我被允许,我会将其作为答案发布(10名以下的用户必须等待8小时)。
更新:我已经采纳了Barmar的建议并检查了网络标签(我不太熟悉的标签),并注意到我从handle.php
收到301查看屏幕截图。我将进行一些搜索并发布我的结果。
原帖:我正在使用JQuery validation plugin通过ajax验证和发送表单数据。问题不在于数据是否正在发送,但表单处理程序表示$ _POST数组中没有元素。我测试了一些不同的方法来发送ajax,数据发送,但表单处理程序没有看到任何$ _POST []值。
注意:我必须使用JQuery验证插件,因此必须由.validate.submitHandler()处理。任何$(form).on()
都不够。
<form action="handle.php" class="sky-form sky-form-modal" id="sky-form-modal" method=
"post" name="sky-form-modal">
<label class="input">
<input name="name" placeholder="Name" type=
"text">
</label>
<label class="input"><input name="company" placeholder="Company" type=
"text">
</label>
<footer>
<button class="button" type="submit">Send request</button>
<div class="progress"></div>
</footer>
</form>
<script>
$("#sky-form-modal").validate({
submitHandler: function(form) {
var $form = $("#sky-form-modal"); //being explicit for testing
var $inputs = $form.find("input, select, button, textarea");
var serializedData = $form.serialize();
request = $.ajax({
url: "handle.php",
type: "POST",
data: serializedData
});
console.log('data: ' + serializedData);
request.done(function(response, textStatus, jqXHR) {
console.log("Response: " + response);
});
},
});
</script>
<?php
if(isset($_POST['name'])) {
echo 'we got it';
} else {
echo 'name not set';
}
?>
好的,所以看起来一切正常,请在填写用户名并将公司留空后查看console.log:
data: name=testtest&company=
Response: name not set
正如您所看到的,序列化工作并获取所有信息,但是当由handle.php处理时,它告诉我$_POST[]
为空。在handle.php上循环使用它证明了这一点:
foreach($_POST as $key=>$value) {
echo "$key: $value
\n";
}
根本没有返回。
我也尝试了ajaxSubmit()
和form.submit()
,但我得到了相同的结果。
这个对我来说是正确的,因为我搜索并搜索了stackoverflow,并且发现大多数问题包括输入标记上的'name'属性,已经完成了。
提前致谢!!
答案 0 :(得分:2)
我的问题与我的代码无关,结束了 .htaccess 中的一些声明。它将我从.php文件重定向到目录(对于更漂亮的URL)。现在,这是一种常见的技术:
如果您正在处理其他人的项目且您的网址没有标准的文件扩展名,请检查.htaccess! 强>
答案 1 :(得分:-1)
Page.html或.php
<form action="/" id="sky-form-modal" method=
"post" name="sky-form-modal">
<input name="name" placeholder="Name" type="text">
<input name="company" placeholder="Company" type="text">
<button class="button" type="submit">Send request</button>
</form>
<div id="result"></div>
<script>
var request;
$("#sky-form-modal").submit(function(event){
// abort any pending request
if (request) {
request.abort();
}
var $form = $(this);
var $inputs = $form.find("input, input");
// serialize the data in the form
var serializedData = $form.serialize();
// let's disable the inputs for the duration of the ajax request
// Note: we disable elements AFTER the form data has been serialized.
// Disabled form elements will not be serialized.
$inputs.prop("disabled", true);
// fire off the request to /form.php
request = $.ajax({
url: "handle.php",
type: "post",
data: serializedData
});
// callback handler that will be called on success
request.done(function (response, textStatus, jqXHR){
// log a message to the console
console.log("Hooray, it worked!");
$("#result").html(response);
});
// callback handler that will be called on failure
request.fail(function (jqXHR, textStatus, errorThrown){
// log the error to the console
console.error(
"The following error occured: "+
textStatus, errorThrown
);
});
// callback handler that will be called regardless
// if the request failed or succeeded
request.always(function () {
// reenable the inputs
$inputs.prop("disabled", false);
});
// prevent default posting of form
event.preventDefault();
});
</script>
handle.php
<?php
foreach ($_POST as $key => $value) {
echo "POST Key: '$key', Value: '$value'<br>";
}
?>
我删除了您的标签和类,以获得表单的简单外观。
答案 2 :(得分:-1)
我猜你错过了&#39;(&#39;验证后 $(&#34;#sky-form-modal&#34;)。validate { $(&#34;#sky-form-modal&#34;)。验证({