AJAX到PHP - > PHP没有拿起通行证

时间:2018-01-13 15:30:04

标签: javascript php mysql ajax

我仍然是一个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;
&#13;
&#13;

2 个答案:

答案 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文档数据属性接受以下格式: 输入:PlainObjectStringArray

PlainObject是我们需要的地方:

var data = {'objectmember': 'objectvalue'};