提问人:MarinHoozian 提问时间:12/26/2019 最后编辑:MarinHoozian 更新时间:12/26/2019 访问量:1799
jQuery Ajax 将输入值从一个模态传递到另一个模态
jQuery Ajax passing input values from one modal to another
问:
我有一个用于输入用户信息的模式。用户应链接到建筑物。输入用户信息并单击提交按钮后,我阻止了默认操作,并在用户模态上叠加/显示建筑模态。 执行此操作的代码如下。
(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>
答:
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将值从一个模态框发送到另一个模态框?
评论