2013-08-31 2 views
1

Можно ли переслать переменную jQuery в функцию.php и использовать ее в некоторой php-функции? Через AJAX или, возможно.WordPress AJAX - хранить переменную jquery и эхо в php - function.php?

Тема связана, не используя плагин.

Например. У меня есть несколько классов CSS, добавленных на стороне клиента через jQuery при щелчке.

Могу ли я использовать эти классы на «стороне сервера», чтобы передать их на любую страницу моей темы?

ответ

3

WordPress среда

Прежде всего, для достижения этой задачи, то рекомендуется затем зарегистрируйте скрипт jQuery, который будет вызывать запрос на сервер. Эти операции будут зацепляться в wp_enqueue_scripts action hook. В том же самом крюке вы должны поставить wp_localize_script, что он используется для включения произвольного Javascript. Таким образом, в передней части будет доступен объект JS. Этот объект содержит правильный URL-адрес, который будет использоваться дескриптором jQuery.

Пожалуйста, обратите внимание на:

  1. wp_register_script(); функции
  2. wp_enqueue_scripts крючок
  3. wp_enqueue_script(); функция
  4. wp_localize_script(); функция

Файл: functions.php 1/2

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 должна быть функция вызвана вашей АЯКС вызова. Помните суффиксы:

  1. wp_ajax (разрешить функцию только для зарегистрированных пользователей или операций админки)
  2. wp_ajax_nopriv (разрешить функцию для каких-либо пользователей привилегий)

Этих суффиксов плюс композа действия название вашего действия:

wp_ajax_myaction или wp_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); 
    }); 
}); 

}); 
Смежные вопросы