从PHP中的Ajax帖子中检索值

时间:2014-04-03 10:25:48

标签: javascript php jquery ajax

我使用ajax请求提交表单,该请求将值发布到php脚本,然后将这些值存储在数据库中。这是我的ajax帖子:

            $.ajax({

                type:"POST",
                url: "wp-content/plugins/super-plugin/process.php",
                'data': 'datastring',
                success: function() {

                    $('#formwrapper').html("<div id='message'></div>");
                    $('#message').html("<h2>Contact form submitted!</h2>")
                    .append("<p>We will be in touch soon.</p>").hide().fadeIn(1500, function() {
                        $('#message').append("<img id='checkmark' src='images/check.png' />");
                    });
                }
            });

这是我的PHP文件:

    $full = explode("&", $_POST["data"]);
    $fname = explode(":", $full[0]);
    $name = $fname[1];
    $femail = explode(":", $full[1]);
    $email = $femail[1];
    $fphone = explode(":", $full[2]);
    $phone = $fphone[1];

    $conn = mysqli_connect("localhost", "Andrew", "Change0", "plugindatadb");
    mysqli_query($conn, "INSERT INTO data (Name, Email, Phone) VALUES ('$name', '$email', '$phone')");

数据字符串中的数据格式为&#34;名称:Bo&amp; email:bob @ mail&amp; phone:0786754333&#34;。但是出于某种原因,我不能使用我的PHP脚本中发送的那些变量?出于某种原因,php脚本也不能运行。

4 个答案:

答案 0 :(得分:0)

您提到在可变数据字符串中设置了格式化查询参数,那么在这种情况下,您应该使用如下所示的ajax请求(删除数据和数据字符串的引号)。

$.ajax({

                type:"POST",
                url: "wp-content/plugins/super-plugin/process.php",
                data: datastring,
                success: function() {

                    $('#formwrapper').html("<div id='message'></div>");
                    $('#message').html("<h2>Contact form submitted!</h2>")
                    .append("<p>We will be in touch soon.</p>").hide().fadeIn(1500, function() {
                        $('#message').append("<img id='checkmark' src='images/check.png' />");
                    });
                }
            });

答案 1 :(得分:0)

从数据字符串中删除''

data: datastring

这不是将数据传递给json的正确方法,如数据,

$.ajax({
    type:"POST",
    url: "wp-content/plugins/super-plugin/process.php",
    'data': {
              name:"Bo",email:"bob@mail",phone:"0786754333"
            },
    success: function() {

        $('#formwrapper').html("<div id='message'></div>");
        $('#message').html("<h2>Contact form submitted!</h2>")
        .append("<p>We will be in touch soon.</p>").hide().fadeIn(1500, function() {
            $('#message').append("<img id='checkmark' src='images/check.png' />");
        });
    }
});

并进入php页面。

$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];

答案 2 :(得分:0)

首先,在:

'data': 'datastring',

如果“datastring”是一个变量,正如您对其格式的描述所示,那些值不应该在引号中。所以:

data: datastring,

其次,如果您的PHP脚本假定传入的数据可以拆分为各种组件,并且在没有首先验证数据是否为所需格式(或者至少存在那些数组元素)的情况下访问这些数组元素,那么它如果数据无效,将抛出异常。目前正在发生这种情况,因为数据是'datastring'。您应该始终验证输入参数,因为它可以节省长时间的时间。

答案 3 :(得分:0)

data 电话中的ajax更改为

data : { datastring : datastring },

在php中访问$_POST['datastring']