【问题标题】:Using POST via AJAX and PHP to send data通过 AJAX 和 PHP 使用 POST 发送数据
【发布时间】:2016-10-14 10:51:00
【问题描述】:

我有一个要在 AJAX 请求中发送的对象:

 function send_value() {
    $.ajax({
        type: 'post',
        url: 'get.php',
        data: {
            source1: "some text",
            source2: "some text 2",
            uniId: 3
        },
        success: function (data) {
            console.log(data);
        }
    });
    return false;
}

我正在尝试通过单击按钮发布它们

<head>
    <script src="./script.js"></script>
    <script src="//code.jquery.com/jquery-1.12.0.min.js"></script>
</head>
<body>
    <form action="get.php" method='post' name='sendform' onSubmit='send_value()'>
        <input type='submit' value='Test1'>
    </form>
</body>

然后我使用 PHP 打印变量:

<?php
    if (!empty($_POST["uniId"])) 
    {
        if ($_POST["uniId"] == 3) 
        {
            echo 'your logged in as '; 
            echo $_POST['uniId'];

            $src1 = $_POST['source1'];
            $src2 = $_POST['source2'];
            echo $src1;
            echo $src2;
        } 
        else 
        {
            echo 'sorry uniID is not correct';
        }
    } 
    else 
    {
        echo "Im sorry the page was not able to load ";
        var_dump($_POST);
    }

现在uniID3 所以我希望看到:

your logged in as 3 some text some text2

但是我得到了:

Im sorry the page was not able to load
C:\wamp64\www\mysite\get.php:20:
array (size=0)
empty

我的代码中没有在我的 PHP 中发布和打印变量有什么问题?

谢谢

【问题讨论】:

  • 从表单中删除action="get.php",并在最后的ajax请求中添加return false
  • 谢谢,试过了,还是不行

标签: javascript php jquery ajax


【解决方案1】:

您缺少数据类型

function send_value() {
    $.ajax({
        type: 'POST',
        url: 'get.php',
        dataType: "json",
        data:({"uniId":"test"}),
        success: function (data) {
            console.log(data);
        }
    });
    return false;
}

【讨论】:

【解决方案2】:

问题是因为您没有阻止标准表单提交。因此,您的 form 元素在发送时没有数据,因为它不包含表单控制元素。

要解决这个问题,您可以将函数输出返回给事件处理程序:

<form action="get.php" method="post" name="sendform" onsubmit="return send_value()">

然而,很多更好的方法是使用不显眼的 JS 附加 submit 事件并阻止标准表单提交。由于您已经在使用 jQuery,因此您可以这样做:

$(function() {
    $('form').on('submit', function(e) {
        e.preventDefault();
        $.ajax({
            type: 'post',
            url: 'get.php',
            data: {
                source1: "some text",
                source2: "some text 2",
                uniId: 3
            },
            success: function (data) {
                console.log(data);
            }
        });
    });
});
<form action="get.php" method='post' name='sendform'>
    <input type='submit' value='Test1'>
</form>

【讨论】:

  • 感谢@Rory,但似乎无法解决问题
  • 为什么?任何错误信息?您尝试使用哪种方法?
  • 不,它只是像以前一样打印出来并且没有得到变量
  • 您是否检查过控制台中的请求以确保数据发送正确?
  • @devpro 很好,我会添加一个新的 jquery CDN,然后用 Rory 的回答再试一次。谢谢
【解决方案3】:

请使用此表单代码

<head>

       <script src="//code.jquery.com/jquery-1.12.0.min.js"></script>
</head>
<body>
    <form action="get.php" method="post" name="sendform" onsubmit="return send_value();">
        <input type='submit' value='Test1'>
    </form>
</body>
 <script>

 function send_value() {
    $.ajax({
        type: 'post',
        url: '2.php',
        data: {
            source1: "some text",
            source2: "some text 2",
            uniId: 3
        },
        success: function (data) {
            console.log(data);
        }
    });
    return false;
}

</script>

“get.php”文件

<?php
print_r($_POST);
    if (!empty($_POST["uniId"])) 
    {
        if ($_POST["uniId"] == 3) 
        {
            echo 'your logged in as '; 
            echo $_POST['uniId'];

            $src1 = $_POST['source1'];
            $src2 = $_POST['source2'];
            echo $src1;
            echo $src2;
        } 
        else 
        {
            echo 'sorry uniID is not correct';
        }
    } 
    else 
    {
        echo "Im sorry the page was not able to load ";
        var_dump($_POST);
    }
    ?>

这是主要的:

<form action="2.php" method="post" name="sendform" onsubmit="return send_value();">

【讨论】:

  • 这项工作在本地是否会像通过 wamp 一样工作,因为它对我不起作用?
  • 我刚得到数组 (size=0)
  • 我也检查了 wamp。请在表单操作属性和 ajax url 参数中正确设置文件名。
猜你喜欢
  • 2018-03-08
  • 1970-01-01
  • 1970-01-01
  • 2010-12-12
  • 2016-02-19
  • 2011-03-03
  • 1970-01-01
  • 2017-02-24
  • 2018-06-10
相关资源
最近更新 更多