我仍然是一个noobie并且还在学习,但我无法理解为什么来自AJAX调用的数据没有成功传递到PHP中。
我在哪里错了?我几个小时都花了几个小时,我无法理解为什么AJAX调用没有将它发布到PHP中。我相信来自"的数据属性一定有问题。数据:姓名+电子邮件"在ajax调用中,或者在PHP端从AJAX中检索数据帖时出错...
我完全糊涂了...... 谢谢你的帮助(对我来说很简单!)
由于
<?php
include_once 'db.php';
$fullname = $_POST['name'];
$email = $_POST['email'];
//this is the new stuff we are putting in
mysqli_select_db('table1');
if(isset($_POST['email']))
{
$checkdata = "SELECT signup_email_of_user FROM table1 WHERE signup_email_of_user = '$email'";
$query = mysqli_query($conn, $checkdata);
if(mysqli_num_rows($query) > 0)
{
echo "err";
exit();
}
else {
$sql = "INSERT INTO table1 (signup_name_of_user, signup_email_of_user) VALUES ('$fullname', '$email')";
mysqli_query($conn, $sql);
echo 'ok';
die;
}
}
?>
&#13;
function submitform1(){
var reg = /^[A-Z0-9._%+-]+@([A-Z0-9-]+\.)+[A-Z]{2,4}$/i;
var name = $('#signup_name_of_user').val();
var email = $('#signup_email_of_user').val();
if(name.trim() == '' ){
alert('Please enter your name.');
$('#signup_name_of_user').focus();
return false;
}else if(email.trim() == '' ){
alert('Please enter your email.');
$('#signup_email_of_user').focus();
return false;
}else if(email.trim() != '' && !reg.test(email)){
alert('Please enter valid email.');
$('#signup_email_of_user').focus();
return false;
}else{
$.ajax({
type:'POST',
url:'test_signup.php',
data: name+email,
beforeSend: function () {
$('.btn-light').attr("disabled","disabled");
$('.sign-up').css('opacity', '.5');
},
success: function(msg){
if(msg == 'ok'){
$('#signup_name_of_user').val('');
$('#signup_email_of_user').val('');
$('.statusMsg').html('<span style="color:green;">Thanks for contacting us, we\'ll get back to you soon.</p>');
}else{
$('.statusMsg').html('<span style="color:red;">Some problem occurred, please try again.</span>');
}
}
});
}
}
&#13;
答案 0 :(得分:3)
这确实是错误的:
data: name+email
值作为键/值对发送。您发送的所有内容都是没有密钥的值。如果没有密钥,服务器端代码如何知道如何检索该值?相反,考虑这样的事情:
data: { 'name': name, 'email': email }
然后在服务器端,您可以通过其键检索值:
$_POST['name']
或:
$_POST['email']
注意: 键不会与保存值的变量同名。在这种情况下,它们似乎只是合理适用的名称。你可以轻松地做到这一点:
data: { 'first': name, 'another': email }
并使用更新的密钥检索值:
$_POST['first']
随着表单复杂性的增加,有多种方法可以在JavaScript中创建对象来定义键和值。例如,您可以在一行代码中序列化整个<form>
。或者可能在JSON中定义更复杂的对象,序列化,然后在服务器端反序列化它们。但从一些简单的键/值对开始在这里工作得很好。
答案 1 :(得分:0)
您的数据似乎格式不正确,请尝试以下方法:
var data = {};
data.name = $('#signup_name_of_user').val();
data.email = $('#signup_email_of_user').val();
并在ajax:data: data,
根据jQuery文档数据属性接受以下格式:
输入:PlainObject
或String
或Array
PlainObject
是我们需要的地方:
var data = {'objectmember': 'objectvalue'};