将单击按钮(不是表单中的按钮)的变量值传递给 ajax url?
pass variable value of the clicked button (not button in a form) to ajax url?
在idx.php head 标签中,我有一个这样的脚本:
<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 行的注释。
当我单击第一个按钮时,我看到警告 window 显示“1.php”
当我单击第二个按钮时,我看到警报 window 显示“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();
});
// ...
}
在idx.php head 标签中,我有一个这样的脚本:
<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 行的注释。
当我单击第一个按钮时,我看到警告 window 显示“1.php”
当我单击第二个按钮时,我看到警报 window 显示“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();
});
// ...
}