Ajax 没有调用警报

Ajax not calling alert

我使用 ajax 成功地将数据插入到我的数据库中。但不知何故它不会弹出我的成功警报消息。这是我的 jquery 代码示例。

$('button[name="submitmsgd"]').click(function(e){
    var categorysupAr = [];
    var unitsgdAr=[];
    var idsgdAr=[];
    var idsgdlength= $("input[name='idsgd[]']").val().length;
    var namesgdAr= [];
    var namesgdlength= $("input[name='namesgd[]']").val().length;
    var detailsgdAr = [];
    var qtysgdAr = [];
    var pricesgdAr = [];
    var totalsAr = [];
    var datefield= $("input[name='datetime']").val();
    $("select[name='categorysup[]']").each(function(){
        categorysupAr.push(this.value);
    });
    $("select[name='unitsgd[]']").each(function(){
        unitsgdAr.push(this.value);
    });
    $("input[name='idsgd[]']").each(function(){
        idsgdAr.push(this.value);
    });
    $("input[name='namesgd[]']").each(function(){
        namesgdAr.push(this.value);
    });
    $("textarea[name='detailsgd[]']").each(function(){
        detailsgdAr.push(this.value);
    });
    $("input[name='qtysgd[]']").each(function(){
        qtysgdAr.push(this.value);
    });
    $("input[name='pricesgd[]']").each(function(){
        pricesgdAr.push(this.value);
    });
    $("input[name='totals[]']").each(function(){
        totalsAr.push(this.value);
    });
    if ($.inArray("defaultc", categorysupAr)>-1){
        e.preventDefault();
        alert("Please choose the right category in all fields");

    }
    else if ($.inArray("defaultu", unitsgdAr)>-1){
        e.preventDefault();
        alert("Please choose the right unit in all fields");
    }
    else if ($.inArray("", idsgdAr)>-1||idsgdlength<=2){
        e.preventDefault();
        alert ("ID can't be empty, and must be more than 2 characters in all fields");
    }
    else if ($.inArray("", namesgdAr)>-1||namesgdlength<=2){
        e.preventDefault();
        alert ("Name can't be empty, and must be more than 2 characters");
    }
    else if ($.inArray("", totalsAr)>-1||$.inArray("0", totalsAr)>-1){
        e.preventDefault();
        alert ("Please make sure all quantity and all prices are filled with correct format(Only number allowed)");
    }else{ 
       $.ajax({
           url: "include/insertmsgd.php",
           method: "POST",
           data:{category:categorysupAr, unitsgd:unitsgdAr, idsgd:idsgdAr, namesgd:namesgdAr, detailsgd:detailsgdAr, qtysgd:qtysgdAr, pricesgd:pricesgdAr, totals:totalsAr, datefield:datefield},
           success: function (data) {
               alert(data);
           }
       });
    }
});

这是我的 php 代码:

<?php
include "myconfiguration.php";

if (isset($_POST["idsgd"])) {
    $idsgd      = $_POST["idsgd"];
    $category   = $_POST["category"];
    $unitsgd    = $_POST["unitsgd"];
    $namesgd    = $_POST["namesgd"];
    $detailsgd  = $_POST["detailsgd"];
    $qtysgd     = $_POST["qtysgd"];
    $pricesgd   = $_POST["pricesgd"];
    $totals     = $_POST["totals"];
    $date       = date('Y-m-d H:i:s', strtotime($_POST["datefield"]));

    for($index=0; $index<count($idsgd); $index++) {
        $idsgd_unstring     = mysqli_real_escape_string($conn, $idsgd[$index]);
        $category_unstring  = mysqli_real_escape_string($conn, $category[$index]);
        $unitsgd_unstring   = mysqli_real_escape_string($conn, $unitsgd[$index]);
        $namesgd_unstring   = mysqli_real_escape_string($conn, $namesgd[$index]);
        $detailsgd_unstring = mysqli_real_escape_string($conn, $detailsgd[$index]);
        $qtysgd_unstring    = mysqli_real_escape_string($conn, $qtysgd[$index]);
        $pricesgd_unstring  = mysqli_real_escape_string($conn, $pricesgd[$index]);
        $totals_unstring    = mysqli_real_escape_string($conn, $totals[$index]);

        $query= '
        INSERT INTO msgeneralgoods 
        VALUES("'.$idsgd_unstring.'", "'.$category_unstring.'", "'.$unitsgd_unstring.'", "'. $namesgd_unstring.'", 
        "'.$detailsgd_unstring.'", "'.$qtysgd_unstring.'", "'.$pricesgd_unstring.'", "'.$totals_unstring.'", "'.$date.'"); 
        ';
       mysqli_query($conn, $query);
       
    }
    if (mysqli_query($conn, $query)) {
        echo '<script language="javascript">';
        echo 'alert("Data Inserted")';
        echo '</script>';
    } else {
        echo '<script language="javascript">';
        echo 'alert("Error")';
        echo '</script>';
    }
}
?>

我确实在 php 页面

中针对我的 if 条件尝试了此代码
if (mysqli_query($conn, $query)) {
    echo 'Data Saved';
} else {
    echo 'Error'
}

但仍然没有警告消息....我是 ajax 的新手,有人能告诉我我做错了什么吗?

将错误添加到 ajax 对 return 的调用中(如果有的话)

 $.ajax({
        url: "include/insertmsgd.php",
        method: "POST",
        data:{category:categorysupAr, unitsgd:unitsgdAr, idsgd:idsgdAr, namesgd:namesgdAr, detailsgd:detailsgdAr, qtysgd:qtysgdAr, pricesgd:pricesgdAr, totals:totalsAr, datefield:datefield},
        success: function (data) {
           alert(data);
        },
        error: function(xhr, status, error) {
            var err = eval("(" + xhr.responseText + ")");
            alert(err.Message);
        }
   });

在控制台和谷歌搜索中彻底搜索后,我发现我的 ajax 调用被取消了,因为我的保存按钮是

button type="submit"

所以我改成

button type="button"

这样我就可以看到我的警报弹出..

希望对遇到和我一样问题的人有所帮助