簡體   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