【问题标题】:Form data taken via Ajax and POSTed to a PHP script for input into DB通过 Ajax 获取表单数据并发布到 PHP 脚本以输入到 DB
【发布时间】:2011-08-15 23:31:21
【问题描述】:

这可能很简单,但我真的很想不通。基本上,我有一个带有一个输入的表单:电子邮件和一个提交按钮。这不是我做的,所以我了解的很少。我试图查找 .ajax jQuery 命令,但它仍然没有任何意义。

基本上,这就是我在 index.php 上的内容。

JS 和 HTML:

<!-- Subscription -->
<script>        
    $(function() {
        $('form input.submit').click(function (event) {
            event.preventDefault();
            event.returnValue = false;
            $.ajax({
                type: 'POST',
                url: 'subscribe.php',
                data: {email: $('form input[type=email]').val()},
                success: function(data) {
                    if (data == 'successful') {
                        $('#subscribe_status').html('Thanks for subscribing! We will let you know.').slideDown();
                    } else if (data == 'already_subscribed') {
                        $('#subscribe_status').html('This email is already subscribed.').slideDown();
                    } else if (data == 'invalid_email') {
                        $('#subscribe_status').html('This email is invalid.').slideDown();
                    } else {
                        $('#subscribe_status').html('Something went wrong. Please try again.').slideDown(); 
                    }
                },
                error: function () {
                    $('#subscribe_status').html('Subscription is not available.').slideDown();
                }
            });
        });
    });
</script>   
<form action="#">
    <input type="email" value="Your e-mail address..." onfocus="value=''" />
    <input type="submit" class="submit" value="Notify me" />
</form>

订阅.php

include 'go.php';
$email = $_POST['email'];
$ip=$_SERVER['REMOTE_ADDR'];
$timestamp = date("m/d/y H:i A");

mysql_query("INSERT INTO subscribers (ip, email, timestamp) VALUES (INET_ATON('$ip'), '$email', '$timestamp') ") or die(mysql_error());

我基本上只是不断收到“出了点问题。请重试。”

【问题讨论】:

  • 在您的 subscribe.php 中输入:“var_dump($_POST);”看看会发生什么
  • 在您的成功函数中,data 参数将是您的 PHP 文件回显的任何内容。因此,如果您在成功的数据输入上没有回显(看起来可能正在发生),那么 JavaScript 会认为出现了问题。你能确认数据确实被输入到数据库中了吗?
  • 不,数据没有进入数据库。我应该有'回声“成功”吗?作为我的 php 的最后一行?编辑:那没有用。
  • 那么下一步就是假设$ip 的一些虚拟值并手动执行SQL 查询。执行此操作时会收到什么错误消息?
  • 你真的应该附加一个调试器并查看你得到的响应。在 Chrome 中运行它并按 F12。转到网络选项卡并查看服务器告诉您的内容。 (旁注:我希望这只是测试/示例代码,因为它很容易受到...的攻击。)

标签: php ajax forms post


【解决方案1】:

Subscribe.php 不返回任何内容,因此您的 JS 中的 data 始终为 emtpy,因此始终执行最后一个 else。

【讨论】:

    猜你喜欢
    • 2013-09-29
    • 1970-01-01
    • 1970-01-01
    • 2016-09-05
    • 1970-01-01
    • 2017-04-27
    • 2014-01-10
    • 2014-09-18
    • 1970-01-01
    相关资源
    最近更新 更多