Плагин WP вызывает функцию PHP с помощью ajaxrequest - PullRequest
0 голосов
/ 14 мая 2018

Внешний интерфейс содержит кнопку, которая вызывает функцию js, которая затем должна вызывать функцию php.это в соответствии с тем, что я читал о php, являющемся языком сервера, и не может напрямую использоваться для обработки событий onclick.

Таким образом, нажатие кнопки, помещенной на определенную страницу интерфейса, вызывает скрипт.js function onclick = "sendAjaxRequest (true);"

У меня в папке плагинов есть js-файл script.js со следующим кодом:

function my_enqueue() {

    wp_enqueue_script( 'ajax-script', get_template_directory_uri() . '/js/my-ajax-script.js', array('jquery') );

    wp_localize_script( 'ajax-script', 'my_ajax_object',
            array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );
}
add_action( 'wp_enqueue_scripts', 'my_enqueue' );
function sendAjaxRequest(value){
jQuery.ajax({
 url: my_ajax_object.ajax_url,
 type: 'POST',
 data: ({action : 'get_my_option', value:value}),
      success: function( response ) {
       console.log( response );
      }

 });
}

и php-плагин wsn-plugin.php со следующими строками кода:

wp_enqueue_script('wsn-script', plugin_dir_url(__FILE__) . 'script.js');
wp_efunction your_function_name() 
{

// wp_enqueue_script( 'myfunction', get_template_directory_uri().'/assets/js/applicantid.js', array( 'jquery' ), '1.0',true);
 wp_localize_script( 'myfunction', 'my_ajax_script', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) );


}

add_action('template_redirect', 'your_function_name');




function get_my_option()
{
    //get applicant id (looks like this is what you want to get back?)

    //send json headers
    header( "Content-Type: application/json" );

    //print out you response as json
    echo json_encode( $value );

    //must have an exit in the ajax action callback!
    exit();

}
add_action("wp_ajax_nopriv_get_my_option", "get_my_option");
add_action("wp_ajax_get_my_option", "get_my_option");nqueue_script('wsn-script');

После запуска сценария, нажав кнопку, я получаю сообщение об ошибке: «Uncaught SyntaxError: Неожиданная строка», и отладчик останавливается в определенной точке вФайл jquery.js, если я пропущу этот пункт, он перейдет к следующему и следующему.

Чего мне не хватает?

1 Ответ

0 голосов
/ 15 мая 2018

Для завершения измените php-файл на:

<?php
   /*
   Plugin Name: WSN Plugin
   description: Maintain all the connections to LimeSurvey
   Version: 0.2
   Author: M.Huber
   Author URI: www.moritzhuber.ch
   License: GPL2
   */

//reference to the backend ajax framework   
add_action( 'wp_enqueue_scripts', 'ajax_test_enqueue_scripts' );
function ajax_test_enqueue_scripts() {
    wp_enqueue_script( 'test', plugins_url( '/test.js', __FILE__ ), array('jquery'), '1.0', true );
    wp_localize_script( 'test', 'ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );
}

// to reference the ajax call to this function
add_action( 'wp_ajax_nopriv_call_this', 'new_company_variable_transfer' );
function new_company_variable_transfer() {
    echo 'Did we get here?';
    wp_die();
}

и файл js должен выглядеть так:

function callAjax(){
    $.ajax({
        type: "POST",
        url: ajax_object.ajax_url,
        data:{action:'call_this'},
        success:function(response) {
        alert(response);
        $("#result").html(response);
        }
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...