【问题标题】:Using jQuery to insert data into a MySQL table使用 jQuery 向 MySQL 表中插入数据
【发布时间】:2009-11-18 22:22:36
【问题描述】:

我正在尝试让它工作,但我遇到了问题。我在这里错过了什么?

我正在尝试通过 jQuery 将一些数据插入到本地 MySQL 表中。如果我自己运行 save.php,它会在数据库中插入一个空白行,这样就可以了。有什么想法吗?

**index.php**

<html>
    <head>
        <link rel="stylesheet" type="text/css" href="css/style.css" />

        <script src="jquery.js" type="text/javascript"></script>

        <script type="text/javascript">
            $(document).ready(function() {
                $('form#submit').submit(function () {
                    var nume = $('#nume').val();
                    $.ajax({
                        type: "POST",
                        url: "save.php",
                        data: "nume="+ nume,
                        success: function() {
                            $('#nume').val('');
                        }
                    });
                return false;
                });
            });
        </script>
    </head>

    <body>

        <form id="submit" method="post">
            <p>Nume: <input id="nume" name="nume"  type="text"></p>
            <p><input id="submitButton" type="button" value="Submit"></p>
        </form>

    </body>
</html>


**save.php**

<?php
    mysql_connect('localhost', 'root', 'root') or die(mysql_error());
    mysql_select_db("test") or die(mysql_error());

    $nume = htmlspecialchars(trim($_POST['nume']));

    $add = "INSERT INTO ajax_test (nume) VALUES ('$nume')";
    mysql_query($add) or die(mysql_error());
?>

【问题讨论】:

  • 我建议您更改编辑器的首选项以使用 4 空格缩进。
  • 我知道这只是测试代码,但请确保在您完成的代码中使用mysql_real_escape_string() 转义$nume,否则您将遇到SQL 注入漏洞。

标签: php mysql jquery


【解决方案1】:

您确定表单正在提交吗?您的按钮不是输入 type="submit" - 它只是一个按钮。它不会自行提交表单。

【讨论】:

  • 我把它改回 type="submit",现在页面重新加载,但它不应该。
  • 尝试在 $('form #submit') 中添加一个空格
  • 如果你使用 preventDefault();你应该能够阻止它重新加载。像这样使用: $('form#submit').submit(function (e) { e.preventDefault(); [rest of your code] });
  • 从提交函数返回 false 也应该防止页面重新加载(表单正在提交到同一页面,因为表单标签中没有设置任何操作)。但似乎没有在表单上设置提交功能,因为 jQuery 选择器不正确。它必须是 $('form #submit')
【解决方案2】:

如果 Scott Saunders 的解决方案不起作用,试试这个:

而不是

url: "save.php",

尝试:

url: "save.php?nume=testvalue",

如果这也不起作用,请检查您的 PHP 脚本是否从 $_GET['nume'] 或 $_POST 中读取输入值 而不是$_REQUEST['nume']

【讨论】:

  • 将 save.php 中的 $_POST['nume'] 更改为 $_REQUEST['nume'] 并在浏览器中调用 save.php?nume=testvalue 然后检查该值是否出现在数据库中.
  • 我不知道我做了什么,但现在它似乎正在工作。并且 save.php 仍然设置为 $_POST。
【解决方案3】:

您可以做几件事来帮助解决问题。

$('form#submit').submit(function () { 后面添加提醒alert("submit"); 以查看表单是否正在提交。还可以在成功alert("success"); 中粘贴一个,看看您是否收到回调。这将向您展示它在哪个阶段失败并帮助您限制搜索。

您还可以使用 firefox 的 firebug 插件来查看通过 ajax 发送的内容,如果它正在工作,看看您是否有任何错误的值。认为您需要勾选 Show XMLHttpRequests in Console

【讨论】:

    猜你喜欢
    • 2014-07-15
    • 2013-06-14
    • 2013-05-01
    • 2014-12-15
    • 1970-01-01
    • 2021-12-20
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多