簡體   English   中英

麻煩將點擊值(PHP)傳遞給ajax函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM