2013-08-31 84 views

回答

3

WordPress的環境

首先,爲了實現這一任務,它的建議然後註冊一個將請求推送到服務器的jQuery腳本。這些操作將被掛鉤在wp_enqueue_scripts的動作鉤子中。在相同的鉤子你應該把wp_localize_script,它被用來包括任意的Javascript。通過這種方式,將在前端提供一個JS對象。這個對象繼承了jQuery句柄使用的正確url。

請看一看到:

  1. wp_register_script();功能
  2. wp_enqueue_scripts
  3. wp_enqueue_script();功能
  4. wp_localize_script();功能

文件:1/2的functions.php

add_action('wp_enqueue_scripts', 'so18550905_enqueue_scripts'); 
function so18550905_enqueue_scripts(){ 
    wp_register_script('ajaxHandle', get_template_directory() . 'PATH TO YOUR SCRIPT FILE', array(), false, true); 
    wp_enqueue_script('ajaxHandle'); 
    wp_localize_script('ajaxHandle', 'ajax_object', array('ajaxurl' => admin_url('admin_ajax.php'))); 
} 

文件:jquery.ajax.js

這個文件使Ajax調用。

jQuery(document).ready(function($){ 
    //Some event will trigger the ajax call, you can push whatever data to the server, simply passing it to the "data" object in ajax call 
    $.ajax({ 
    url: ajax_object.ajaxurl, // this is the object instantiated in wp_localize_script function 
    type: 'POST', 
    data:{ 
     action: 'myaction', // this is the function in your functions.php that will be triggered 
     name: 'John', 
     age: '38' 
    }, 
    success: function(data){ 
     //Do something with the result from server 
     console.log(data); 
    } 
    }); 
}); 

文件:functions.php的2/2

最後你的functions.php文件應該有你的Ajax調用觸發的功能。 記住後綴:

  1. wp_ajax(允許功能只對註冊用戶或管理員面板操作)
  2. wp_ajax_nopriv(允許的功能沒有權限的用戶)

這些後綴加上動作構成你行動的名稱:

wp_ajax_myactionwp_ajax_nopriv_myaction

add_action('wp_ajax_myaction', 'so18550905_wp_ajax_function'); 
add_action('wp_ajax_nopriv_myaction' 'so18550905_wp_ajax_function'); 
function so18550905_wp_ajax_function(){ 
    //DO whatever you want with data posted 
    //To send back a response you have to echo the result! 
    echo $_POST['name']; 
    echo $_POST['age']; 
    wp_die(); // ajax call must die to avoid trailing 0 in your response 
} 

希望它有幫助!

讓我知道如果有什麼不清楚。

3

是的,你可以使用AJAX發送你的jQuery變量。 (或任何Javascript變量)

只要做一個JSON.stringify(any-Variable-Here)然後你得到一個相應的字符串。

通過AJAX發送值到任何PHP文件,如:

var toBeSent = JSON.stringify($($('#selector')[0]).attr('class')); 
$.ajax({ 
    type: "POST", 
    url: 'function.php', 
    data: toBeSent, 
    success: function(data){ // any action to be performed after function.php returns a value. 
    }, 
    dataType: 'text' 
}); 

注:我在這裏字符串化的項目,這樣就可以通過做簡單的分裂訪問服務器端的變量。

3

當然可以

$('element').click(function(e){ 
    e.preventDefault(); 
    var el = $(this); 

    //do stuff on click 

    //send this elements class to the server  
    $.ajax({ 
     url: "some.php", 
     data: { 
      class: el.attr('class') 
     }, 
     success: function(r){ 
      alert("class name sent successfully to some.php"); 
     } 
    }); 
}); 
2

你另一種選擇可能是$.post()

$(document).ready(function() { 

$('#myDiv').click(function(){ 
var myClass = $(this).attr('class'); 
var url = 'page.php'; 
    $.post(url, { class: myClass }) 
    .done(function() { 
    alert('class sent to ' + url); 
    }); 
}); 

});