Задать вопрос
@not-deanon

Как правильно подключить Ajax на Wordpress?

Здравствуйте! Не работает передача переменной из js в php, помогите!
Вот js код:
function Coor() {
var offset = jQuery(this).offset();
var x = offset.left;
var y = offset.top;
    jQuery.ajax({
    type: "POST",
    url: "/wp-admin/admin-ajax.php",

    data:{
            'action': 'jq_coor',
            'top':y,
            'left':x
            },
      success: function( data ) {
    alert( data );
  }  
    })
    alert('left = ' + x + 'top = ' + y);
}

Вот php в functions.php:
function jq_coor() {
    $top = $_POST['y'];
    $left = $_POST['x'];
    if(!$top) {echo 'sdfjk';}
    $dblocation = "localhost"; 
$dbname = "wpdevice";
$dbuser = "root";         
$dbpasswd = "";          
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
if (!$dbcnx) 
{
  echo("<P>В настоящий момент сервер базы данных не доступен, поэтому 
           корректное отображение страницы невозможно.</P>");
  exit();
}
    mysql_select_db("wpdevice",$dbcnx);
    mysql_query("SET NAMES 'utf8_general_ci'",$dbcnx);
    $result = mysql_query ("INSERT INTO `wp_config` (`Top`,`Left`) VALUES ('$top','$left')");
    echo mysql_error($dbcnx);
}
add_action('wp_ajax_jq_coor', 'jq_coor');
add_action('wp_ajax_nopriv_jq_coor', 'jq_coor');
add_action( 'wp_enqueue_scripts', function(){
    wp_enqueue_script( 'jq_coor', 'http://device.ru/wp-includes/js/jquery.coor.js', array( 'jquery' ), '1.0' );
    wp_localize_script( 'jq_coor', 'CJQ', array(
            'ajax_url' => admin_url( 'admin-ajax.php' ), 
        )
    );
});
  • Вопрос задан
  • 903 просмотра
Подписаться 1 Оценить 13 комментариев
Пригласить эксперта
Ответы на вопрос 2
webagent
@webagent
Web разработчик
А какой ответ сервера?
В функцию попадаешь?
Ответ написан
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Не забывайте, что после выполнения вашего PHP-кода его надо убить:
function jq_coor() {

	// 1. Проверяете wp_nonce и наличие данных в POST
	...
	// 2. Обрабатываете данные и делаете все что нужно
	...
	// 3. Возвращаете браузеру результат / сообщение (можно юзать wp_send_json_success() и подобные функции)
	echo $some_result;
	// 4. Прекращаете выполнение
	wp_die();

}
add_action( 'wp_ajax_jq_coor', 'jq_coor' );
add_action( 'wp_ajax_nopriv_jq_coor', 'jq_coor' );
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы