jQuery Ajax 将输入值从一个模态传递到另一个模态

jQuery Ajax passing input values from one modal to another

提问人:MarinHoozian 提问时间:12/26/2019 最后编辑:MarinHoozian 更新时间:12/26/2019 访问量:1799

问:

我有一个用于输入用户信息的模式。用户应链接到建筑物。输入用户信息并单击提交按钮后,我阻止了默认操作,并在用户模态上叠加/显示建筑模态。 执行此操作的代码如下。

(function($) {
    $('#modalAddUser').modal('show');
    $('#formAddUser').on('submit', function(e) {
        e.preventDefault();
        let name_user = $('input[name="name"]').val();
        let address_user = $('input[name="address"]').val();
        let city_user = $('input[name="city"]').val();

        $.ajax({
            url: './modals/modalConnectBuilding.php',
            method: 'post',
            data: {
                "name_user": name_user,
                "address_user": address_user,
                "city_user": city_user
            },
            success: function() {
                console.log(name_user);
                console.log(address_user);
                console.log(city_user);
            }
        });

        $('#modalConnectBuilding').modal('show');
    });
})(window.jQuery);

console.log() 正确记录输入信息,但在“modalConnectBuilding.php”中,以下内容不起作用:

<?php
    echo $_POST['name_user'];
    echo $_POST['address_user'];
    echo $_POST['city_user'];
?>

产生以下错误:

Undefined index: name_user in
C:\laragon\www\modals\modalConnectBuilding.php
Undefined index: address_user in
C:\laragon\www\modals\modalConnectBuilding.php
Undefined index: city_user in
C:\laragon\www\modals\modalConnectBuilding.php

我的目的是做一个经典的'form action=“./php/processConnectBuilding.php” method=“post”',但需要访问三个未定义的变量,如上所示。添加用户和建筑物是孤立的,但以这种方式连接时则不然。任何帮助将不胜感激,如果您需要更多信息,请询问。谢谢!

我提交的表单(在模态中)的代码如下(请注意,默认操作被 preventDefault() 抑制,因此 action 属性永远不会被“调用”,连接建筑物的表单也基本相同,但 action 属性没有被抑制):

<form role="form" id="formAddUser" action="./php/processAddUser.php" method="post">
    <div class="form-group form-group-default required">
        <label>Name</label>
        <input type="text" name="name" class="form-control" required>
    </div>
    <div class="form-group form-group-default required">
        <label>Address</label>
        <input type="text" name="address" class="form-control" required>
    </div>
    <div class="form-group form-group-default required">
        <label>City</label>
        <input type="text" name="city" class="form-control" required>
    </div>
    <div style="margin-top: 25px">
        <button type="submit" class="btn btn-primary btn-lg btn-block"><i class="fa fa-plus-circle"></i> Add</button>
    </div>
</form>
php jquery ajax 模态对话框 未定义索引

评论

0赞 Amit Sharma 12/26/2019
您能否为您提交的表格添加代码?
0赞 MarinHoozian 12/26/2019
@AmitSharma 当然,我已经把它添加到了我问题的底部。

答:

0赞 hammer 12/26/2019 #1
<html>
<head>
<script src="https://code.jquery.com/jquery-2.2.0.min.js"></script>

</head>
<body>
<form role="form" id="formAddUser" action="" method="post">
    <div class="form-group form-group-default required">
        <label>Name</label>
        <input type="text" id="name" name="name" class="form-control" required>
    </div>
    <div class="form-group form-group-default required">
        <label>Address</label>
        <input type="text" name="address" class="form-control" required>
    </div>
    <div class="form-group form-group-default required">
        <label>City</label>
        <input type="text" name="city" class="form-control" required>
    </div>
    <div style="margin-top: 25px">
        <button type="submit" class="btn btn-primary btn-lg btn-block"><i class="fa fa-plus-circle"></i> Add</button>
    </div>
</form>
</body>
</html>

<script>
$('#formAddUser').on('submit', function(e) {
        e.preventDefault();
        let name_user = $('input[name="name"]').val();
        let address_user = $('input[name="address"]').val();
        let city_user = $('input[name="city"]').val();

        $.ajax({
            url: 'tariffdetaildata.php',
            method: 'post',
            data: {
                "name_user": name_user,
                "address_user": address_user,
                "city_user": city_user
            },
            success: function(data) {
                alert(data)
            }
        });
});

</script>

关税详细数据.php

<?php

    echo $_POST['name_user'];
    echo $_POST['address_user'];
    echo $_POST['city_user'];

评论

0赞 MarinHoozian 12/26/2019
路径是正确的,在记录数据时,有趣的是,我得到了第二个模态(modalConnectBuilding.php)的整个HTML代码,而不仅仅是传递的数据,但错误仍然存在。
0赞 hammer 12/26/2019
试试这个 $name= implode("','", $_POST["name_user"]); echo $name;
0赞 MarinHoozian 12/26/2019
不,不起作用。我得到“警告:implode():传入的参数无效......modalConnectBuilding.php”
0赞 hammer 12/26/2019
@MarinHoozian我测试了它(形式和ajax)并且它工作正常。您使用的是jquery的哪个版本?
0赞 MarinHoozian 12/26/2019
我正在使用jQuery 3.2.1。作为 Revox Pages 仪表板 UI 套件的一部分。
0赞 Amit Sharma 12/26/2019 #2

尝试这种方式,我认为一旦您从 ajax 返回响应,您需要打开模式弹出窗口。

(function($) {
$('#modalAddUser').modal('show');
$('#formAddUser').on('submit', function(e) {
    e.preventDefault();
    let name_user = $('input[name="name"]').val();
    let address_user = $('input[name="address"]').val();
    let city_user = $('input[name="city"]').val();

    $.ajax({
        url: './modals/modalConnectBuilding.php',
        method: 'post',
        data: {
            "name_user": name_user,
            "address_user": address_user,
            "city_user": city_user
        },
        success: function() {
            console.log(name_user);
            console.log(address_user);
            console.log(city_user);

            $('#modalConnectBuilding').modal('show');

           $("#modalConnectBuilding .modal-body #name_user").val( name_user);
           $("#modalConnectBuilding .modal-body #address_user").val( address_user);
           $("#modalConnectBuilding .modal-body #city_user").val( city_user);


        }
    });


});
})(window.jQuery);

评论

0赞 MarinHoozian 12/26/2019
嗯,这似乎很合乎逻辑,我很高兴能尝试一下。不幸的是,无论出于何种原因,它仍然不起作用,即使调用了成功回调。GET方法是否更适合该任务?我不知道它会有多大区别,因为我对PHP相当陌生。
0赞 Amit Sharma 12/26/2019
尝试print_r($ _POST);死;如果它打印了一些东西
0赞 MarinHoozian 12/26/2019
使用 printr_r($_POST),我得到一个空数组,或者更确切地说是“数组()”。请记住,这两个模态都包含在文件中并按顺序调用,我开始认为它们同时包含的事实与此有关。
0赞 Amit Sharma 12/26/2019
为什么需要第二个模态框?
0赞 Amit Sharma 12/26/2019
基本上,您正在使用ajax post将值从一个模态框发送到另一个模态框?