javascript - 如何处理放置在不同脚本标签中的两个不同的ajax?
问题描述
我有一个带有 3 个下拉列表和 1 个提交按钮的页面,在选择顶部下拉值时使用 ajax 自动填充。在使用提交按钮提交信息之后,为此,我在不同的脚本标签中编写了 ajax。
这里的问题是第一个 ajax 工作正常,但第二个 ajax 不工作,我知道不允许 2 ajax 调用。
我试图通过在同一页面上编写 PHP 来做到这一点,但在重新加载页面时,先前选择的信息会自动提交。
<form style="margin: 10px 50px 10px 50px;" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="POST">
<div class="row">
<div class="col-md-12">
<div class="form-group">Book Name
<select class="form-control" id="sel_book">
<option value='0'>---Select---</option>
<?php
foreach($result as $key=>$rs):
{
?>
<option value="<?php $key; ?>"> <?php echo $rs[1];?> </option>
<?php
}
endforeach;
?>
</select>
</div>
</div>
</div>
<div class="row" >
<div class="col-md-12" >
<div class="form-group">Member ID
<select class="form-control" id="sel_uid">
</select>
</div>
</div>
</div>
<div class="row" >
<div class="col-md-12" >
<div class="form-group">Member Name
<select class="form-control" id ="sel_uname">
</select>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<button class="btn btn-icon btn-3 btn-primary" id="accept">
<span class="btn-inner--icon"><i class="ni ni-user-run"></i></span>
<span class="btn-inner--text">Accept Return</span>
</button>
</div>
</div>
</form>
<script>
$(document).ready(function(){
$("#sel_book").change(function(){
var bid = $(this).val();
bid = bid+1;
//alert(bid);
$.ajax({
url: 'get_user.php',
type: 'post',
data: {id:bid},
async: false,
dataType: 'json',
success:function(response){
$("#sel_uid").append("<option value='"+response.name+"'>"+response.name+"</option>");
$("#sel_uname").append("<option value='"+response.mname+"'>"+response.mname+"</option>");
}
});
});
});
</script>
<script>
$(document).ready(function(){
$('#accept').click(function(e){
var book = $("#sel_book :selected").text();
var memberId = $("#sel_uid :selected").text();
var memberName = $("#sel_uname :selected").text();
var message = book+'\n'+memberId+'\n'+memberName;
alert(message);
e.preventDefalut();
$.ajax({
type:'post',
url:'accept_return.php',
async: false,
data:{bname:book,memid:memberId,memname:memberName},
dataType:'json',
success:function(response){
$("#final").text("Processing completed sucessfully");
}
});
});
});
</script>
第二个脚本运行正常,但是没有对 PHP 页面进行 ajax 调用。
解决方案
<script>
$(document).ready(function(){
$("#sel_book").change(function(){
var bid = $(this).val();
bid = bid+1;
//alert(bid);
$.ajax({
url: 'get_user.php',
type: 'post',
data: {id:bid},
async: false,
dataType: 'json',
success:function(response){
$("#sel_uid").append("<option value='"+response.name+"'>"+response.name+"</option>");
$("#sel_uname").append("<option value='"+response.mname+"'>"+response.mname+"</option>");
}
});
});
});
$('#accept').click(function(e){
var book = $("#sel_book :selected").text();
var memberId = $("#sel_uid :selected").text();
var memberName = $("#sel_uname :selected").text();
var message = book+'\n'+memberId+'\n'+memberName;
alert(message);
e.preventDefalut();
$.ajax({
type:'post',
url:'accept_return.php',
async: false,
data:{bname:book,memid:memberId,memname:memberName},
dataType:'json',
success:function(response){
$("#final").text("Processing completed sucessfully");
}
});
});
</script>
嗨,您正面临这个问题,因为使用了两个准备好的文件。第一个准备好的文件工作正常,但第二个准备好无法识别。请把您的点击功能从任何准备好的文件中拿出来。请尝试使用如下的单个脚本。这可能会有所帮助
推荐阅读
- python - TypeError: super() 在 Python 3.x 上至少需要 1 个参数(给定 0)
- java - 如何使用 testng-results.xml 生成可发送电子邮件的格式执行报告
- asp.net - 在 asp.net 中从 FTP 读取 .csv 文件
- firebase - Firebase 数据库规则允许更新但阻止创建
- ios - UITableView 滑动编辑
- javascript - TypeError:地图不是函数
- python - Python如何在方法调用中改变变量
- php - 使用 laravel 的背包填充嵌套下拉列表
- python - 在列表中制作列表:从单词列表中的单词制作单词列表
- javascript - 如何在渲染函数中访问道具