繁体   English   中英

通过AJAX通过PHP发送表单,而无需刷新页面

[英]Sending form with PHP through AJAX with no page refresh

因此,我有这段代码可以使用PHP和AJAX来发布数据,而无需重定向页面,我在登录页面上使用了相同的脚本。 登录页面的作用就像超级按钮,而其他页面则不然。 两者之间的唯一区别是登录php脚本页面使用if (empty($_POST) === false) {} ,其他页面使用if (isset($_POST['save-settings'])) {} 我不知道该怎么办。以下是我正在使用的脚本。

HTML按钮

<input id="save-settings" class="submit" type="submit" name="save-settings" value="Save" onclick="return false;" />

脚本

$(document).ready(function() {
        $("#save-settings").click(function() {
            var name        = $("#webname").val();
            var charset     = $("#webchar").val();
            var meta        = $("#webmeta").val();
            var description = $("#webdesc").val();
            var startsite   = $("#webstartsite").val();
            var starturl    = $("#webstartsiteurl").val();
            var footer      = $("#webfooter").val();

            $.post("../lib/action.php", {
                name: name,
                charset: charset,
                meta: meta,
                description: description,
                startsite: startsite,
                starturl: starturl,
                footer: footer
            }, function(data) {
                $("#gy-main-notification-bar").hide().html("<h1>!</h1><h2>" + data + "</h2>").slideDown(500);
                setTimeout(function() { $("#gy-main-notification-bar").slideUp(500) }, 2500);
            });
        });
    });

PHP脚本

if(isset($_POST['save-settings'])) {
    $updatesettings = "UPDATE `settings` SET
    `name`='".escape($_POST['webname'])."',
    `charset`='".escape($_POST['webchar'])."',
    `meta`='".escape($_POST['webmeta'])."',
    `description`='".escape($_POST['webdesc'])."',
    `startsite`='".escape($_POST['webstartsite'])."',
    `starturl`='".escape($_POST['webstartsiteurl'])."',
    `footer`='".escape($_POST['webfooter'])."'
     WHERE `id`= 1";

     if ($update_settings = $db_connect->query($updatesettings)) {}
     echo 'Success!';
 }

由于我将所有"onclick"脚本都放在一个action.php文件中,因此我真的不想在脚本中将isset更改为empty 当我删除onclick="return:false;" 从输入它的作品..我很困惑,我寻求任何帮助!

单击事件处理程序函数可以具有事件参数。 捕获此参数时,可以使用preventDefault()方法。 使用此方法,将阻止默认的单击操作,并且不会刷新页面。

更改

$("#save-settings").click(function() {
        var name        = $("#webname").val();

$("#save-settings").click(function(ev) {
        ev.preventDefault();
        var name        = $("#webname").val();

您忘记了包括帖子保存设置。 您可能应该将其包含在ajax帖子中,如下所示:

$.post("../lib/action.php", {
            'name': name,
            'charset': charset,
            'meta': meta,
            'save-settings': true,
            'description': description,
            'startsite': startsite,
            'starturl': starturl,
            'footer': footer
        },

在您的sql语句中更改此内容以获取正确的帖子

 `name`='".escape($_POST['name'])."',
`charset`='".escape($_POST['charset'])."',
`meta`='".escape($_POST['meta'])."',
`description`='".escape($_POST['description'])."',
`startsite`='".escape($_POST['startsite'])."',
`starturl`='".escape($_POST['starturl'])."',
`footer`='".escape($_POST['footer'])."'
 WHERE `id`= 1";

在HTML中编写onclick="return false"取消JavaScript代码的执行。 只需删除此onclick="..."并添加诸如此类的preventDefault()即可阻止表单提交

$("#save-settings").click(function(e) {
   e.preventDefault();
   .....

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM