正如Tittle所说,表单值不会发送回服务器.ajax调用正常。如何发布输入值?我做错了什么?我通过PHP使用一个简单的函数处理下一页上的值,所以我的问题必须在这个脚本中。
$(document).ready(function() {
var email_state = false;
$('#form').on('submit', function (e) {
e.preventDefault();
var email = $('#email').val();
email = email.replace(/\.(?![^@]+$)/g, '');
if (email == '') {
email_state = false;
return;
}
$.ajax({
url: 'https://test.com/login.php',
type: 'post',
data: {
'email_check' : 1,
'email' : email,
},
success: function(response){
if (response == 'not_taken' ) {
email_state = false;
$('#loginerror').addClass('alert').text('There was an error');
}else if (response == 'taken') {
email_state = true;
$('#form')[0].submit();
}
}
});
});
});
我的PHP代码如下:
$file = fopen("questions.txt","a");
if(isset($_POST['btnsubmit'])){
$data = '-' . $_POST['email'] . '-' . $_POST['question'] . "\n";
$ret = file_put_contents('questions.txt', $data, FILE_APPEND | LOCK_EX);
答案 0 :(得分:0)
问题是表单中的变量未设置。当您删除preventDefault
(来自评论If i remove the prevent default and $('#form')[0].submit(); the form get's submitted correctly
)
取走e.preventDefault()
,或手动提供参数。通过:
data: {
'email_check' : 1,
'email' : email,
'question' : '{question here take away brackets}',
'btnsubmit' : 1,
},
您的PHP代码的问题是您的if语句未命中,因为未设置该值。您需要在ajax调用中的数据对象中设置它,或者删除preventDefault,它会自动从表单中POST变量。
此外,不确定您是否只是发布了其余的代码,但除非您echo
返回某个内容,否则该成功函数将永远不会被点击:
echo json_encode($ret)
答案 1 :(得分:0)
你不是POST $_POST['btnsubmit']
所以if语句永远不会被激活。我会做的
$file = fopen("questions.txt","a");
$data = '-' . $_POST['email'] . '-' . $_POST['question'] . "\n";
$ret = file_put_contents('questions.txt', $data, FILE_APPEND | LOCK_EX);
如果你真的想保留$ _POST ['btnsubmit']然后将它添加到jquery以及问题,那你就错过了。
var question = $('#question').val();
email_check : 1,
email : email,
question: question,
btnsubmit : 1
然后在php
$file = fopen("questions.txt","a");
if($_POST['btnsubmit'] == 1){
$data = '-' . $_POST['email'] . '-' . $_POST['question'] . "\n";
$ret = file_put_contents('questions.txt', $data, FILE_APPEND | LOCK_EX);
}
答案 2 :(得分:0)
您正在检查' btnsubmit'尚未发布的内容,这就是为什么if条件内部没有被执行的原因。您需要提供问题'的数据。同样。使用以下代码:
$file = fopen("questions.txt","a");
if(isset($_POST['email']) && isset($_POST['question'])){
$data = '-' . $_POST['email'] . '-' . $_POST['question'] . "\n";
$ret = file_put_contents('questions.txt', $data, FILE_APPEND | LOCK_EX);
}
在ajax电话中:
data: {
'email_check' : 1,
'email' : email,
'question': '{your value here}',
},