[英]Trouble passing clicked value (PHP) to ajax function
我將點擊的元素的值傳遞給ajax函數時遇到了麻煩。 下面是ajax函數。
// Get values from all three dropdown menus
var state = $('#states').val();
var status = $('#status').val();
var services = $('#services').val();
// Get value from clicked element
var pagedtest = pagednum;
function do_ajax() {
$.ajax({
url: ajaxurl,
data: {
'action' : 'json_info2',
'state' : state,
'status' : status,
'services' : services,
'pagedtest' : pagedtest
},
success:function(moredata) {
// This outputs the result of the ajax request
$('#project-list').html( moredata );
$('#project-list').fadeIn();
}/*,
error: function(errorThrown){
var errorMsg = "No results match your criteria";
$('#project-list').html(errorMsg);
}*/
}); // end of ajax call
} // end of function do_ajax
然后假設我有一系列標簽,每個標簽都動態分配一個標題,如下所示:
<a title="90" class="page-link">90</a>
<a title="87" class="page-link">87</a>
<a title="102" class="page-link">102</a>
我正在嘗試在我的php頁面中運行以下代碼,以便獲取單擊的值以傳遞給ajax。
$(".page-link").click(function() {
var pagednum = $(".page-link").val($(this).attr('title'));
return false;
});
當我點擊其中一個鏈接時,沒有任何反應。 我哪里錯了?
當ajax函數運行時,如何傳遞clicked標簽的title屬性的值?
嘗試這個:
$(".page-link").click(function() {
var pagednum = $(this).attr('title');
});
另外,確保您的錨標簽具有href屬性。
我不完全確定這兩個javascript部分之間的關系是什么,但似乎你試圖在第一部分使用pagednum
。
但是,您在點擊處理中定義的pagednum
如下所示:
$(".page-link").click(function() {
var pagednum = $(".page-link").val($(this).attr('title'));
// ^^^ defining a variable in the local scope
return false;
});
當你聲明了變量var
的點擊處理程序中的關鍵字,該變量的作用域是局部的功能,單擊處理程序。
如果你需要一個全局變量,那么應該全局聲明它(在任何jQuery函數之外),如:
var pagednum;
// rest of scripts, functions, etc.
然后你在點擊處理程序中使用它,如:
$(".page-link").click(function() {
pagednum = $(".page-link").val($(this).attr('title'));
// ^^^^^^^^ use global variable
return false;
});
有關更多詳細信息,發布完整的腳本將有助於我們了解所有內容的相關性。
希望這篇文章能夠澄清我上面提到的內容,以及它是如何解決的。
我有一個php頁面,在那個頁面上我有幾個具有title屬性的元素。 我最初使用的是標簽,但我決定改用li。 所以我在我的php頁面上有這些:
<li title="87" class="page-link">Click this 87</li>
<li title="2" class="page-link">Click this 2</li>
<li title="34" class="page-link">Click this 34</li>
我想要做的是點擊那些li,獲取標題值,將其保存為變量,並將其傳遞給ajax函數。 我最初嘗試包含一個jquery點擊功能(在我的PHP頁面中)來獲取值。 我能夠成功獲得點擊的價值,但我仍然無法將其傳遞給ajax功能。
所以相反,我去了我的ajax函數(它位於一個名為ajaxLoop.js的外部js文件中)。 在js文件里面,我添加了以下內容:
// make pagination clickable after filter
$( ".page-link" ).click(function() {
var pagednumtest = $(this).attr('title');
alert("the set number is "+pagednumtest);
run_ajax();
}); // end of click function for states
這成功地獲取了click的值,因為警報能夠輸出它,但我仍然無法在實際的ajax函數中訪問var pagednumtest。 事實上,ajax函數不會運行,因為它無法識別我試圖傳遞的變量。 所以我通過將變量傳遞給ajax函數來修改上面的函數,如下所示:
我變了
run_ajax();
對此
run_ajax(pagednumtest);
所以整個函數看起來像這樣:
// make pagination clickable after filter
$( ".page-link" ).click(function() {
var pagednumtest = $(this).attr('title');
alert("the set number is "+pagednumtest);
// variable is passed to the ajax function
run_ajax(pagednumtest);
}); // end of click function for states
然后ajax函數接受了變量值,並且我能夠使用它。
function run_ajax(mynumber) {
// Get values from all three dropdown menus
var state = $('#states').val();
var markets = $('#markets').val();
var services = $('#services').val();
var mytestnumber = mynumber;
$.ajax({
url: ajaxurl,
data: {
'action' : 'json_info2',
// ignore state, markets, and services as they are dropdown menu values
'state' : state,
'status' : markets,
'services' : services,
// here I was able to get and use the clicked value
'testnum' : mytestnumber
},
success:function(moredata) {
// This outputs the result of the ajax request
$('#project-list').html( moredata );
$('#project-list').fadeIn();
}/*,
error: function(errorThrown){
var errorMsg = "No results match your criteria";
$('#project-list').html(errorMsg);
}*/
}); // end of ajax call
} // end of function do_ajax
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.