如何解决将单击的按钮不是表单中的按钮的变量值传递给 ajax url?
<script type="text/javascript">
$(document).ready(function(){
var alamat="1.PHP";
//$('button[name="test"]').click(function(){
//var alamat= $(this).val();
//alert(alamat);
//});
$('.search-Box input[type="text"]').on("keyup input",function(){
/* Get input value on change */
var inputVal = $(this).val();
var resultDropdown = $(this).siblings(".result");
if(inputVal.length){
$.get("backend-search.PHP",{term: inputVal}).done(function(data){
// display the returned data in browser
resultDropdown.html(data);
});
} else{
resultDropdown.empty();
}
});
// Set search input value on click of result item
$(document).on("click",".result p",function(){
$(this).parents(".search-Box").find('input[type="text"]').val('');
$.ajax({
type: "POST",//url: "1.PHP",url: alamat,data: {name: $(this).text()},success: function(msg){
$("#hasil").html(msg)
},error: function(){
alert("failure");
}
});
$(this).parent(".result").empty();
});
});
</script>
在同一个 idx.PHP 中,在 body 标签中,我有这个:
<button name="test" class="btn" value="1.PHP"><a href="idx.PHP">THIS</a></button>
<button name="test" class="btn" value="2.PHP">THAT</button>
在脚本的第 2 行中,我将变量 alamat 值硬编码为“1.PHP”
然后在 $ajax 的 url 中,我使用了 alamat 变量值。
代码按预期运行。
现在我试图让 alamat 变量根据点击的按钮是动态的。
所以我注释了(//)脚本的第 2 行,并取消注释了第 3 行到第 6 行。
当我点击第一个按钮时,我看到警告窗口显示“1.PHP”
当我单击第二个按钮时,我看到警报窗口显示“2.PHP”。
所以我认为 alamat 变量有一个值,就像我硬编码它一样。
但似乎 $ajax url 没有任何价值,因为在我单击“.result p”列表之一后它只是静止不动。因此,单击按钮的 alamat 变量值似乎没有传递给 $ajax url 调用。
所以我的问题是:
我如何编码才能让 $ajax url 值根据点击的按钮可以是“1.PHP”或“2.PHP”?
或
如何将 alamat 变量值(从第 3 行到第 6 行)转到 $ajax url:alamat
?
解决方法
您在函数内重新声明了 alamat
,这会生成一个全新的(局部范围的)变量。就说:
alamat = $(this).val();
这将设置您已经在函数外声明的(全局)alamat
变量。所以你完成的代码将是:
var alamat="1.php";
$(document).ready(function(){
$('button[name="test"]').click(function(){
alamat = $(this).val();
});
// ...
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。