2016-12-14 2 views
0

Я пытаюсь создать форму с функциональностью Ajax для плагина Wordpress. Вызывается функция jQuery, но никакой ответ не отображается.Ajax не работает в Wordpress Plugin

Вот код Ajax

function ajaxformschool() { 
    var id = "Hello World"; 
    jQuery.ajax({ 
     type: 'POST', 
     url: ajaxschoolajax.ajaxurl, 
     action: 'ajaxschool_process', 
     data: {"data":id}, 
     dataType: 'json', 
     success: function(data) { 
      alert(data); 
      jQuery("#comment").html(data); 
     } 
    }); 
}  

Передняя часть и регистрации Ajax код

function ajaxschool_enqueuescripts() { 
    wp_enqueue_script('ajaxschool', ASSFURL. '/js/ajaxschool.js', array('jquery')); 
    wp_localize_script('ajaxschool', 'ajaxschoolajax', array('ajaxurl' => admin_url('admin-ajax.php'))); 
} 

add_action('wp_enqueue_scripts', ajaxschool_enqueuescripts); 
<form> 
    echo '<a onclick="ajaxformschool();" style="cursor: pointer"><b>Search</b></a>'; 
    echo '<div id="comment"></div>'; 
</form> 

Ajax Функция Действие

function ajaxschool_process() { 
    $response="thanks everythong is ok"; 
    echo json_encode($response); 
    die($response); 
} 

add_action('wp_ajax_nopriv_ajaxschool_process', 'ajaxschool_process'); 
add_action('wp_ajax_ajaxschool_process', 'ajaxschool_process'); 

ответ

2

вам нужно добавить свойство action в поле данных функции jquery ajax.

Ajax код

jQuery.ajax({ 
     type: 'POST', 
     url: ajaxschoolajax.ajaxurl,  
     data: {"data":id,'action':'ajaxschool_process'}, //MY CHANGE 
     dataType: 'json', 
     success: function(data) { 
      alert(data); 
      jQuery("#comment").html(data); 
    } 
    }); 
0

Вот HTML для формы

<form type="post" action="" id="newCustomerForm"> 

<label for="name">Name:</label> 
<input name="name" type="text" /> 

<label for="email">Email:</label> 
<input name="email" type="text" /> 

<label for="phone">Phone:</label> 
<input name="phone" type="text" /> 

<label for="address">Address:</label> 
<input name="address" type="text" /> 

<input type="hidden" name="action" value="addCustomer"/> 
<input type="submit"> 
</form> 
<br/><br/> 
<div id="feedback"></div> 

Далее, откройте functions.php и добавьте следующую строку, чтобы проверить Jquery загружается на вашем сайте :

wp_enqueue_script('jquery'); 
//The basic structure for writing an AJAX call is as follows: 

function myFunction(){ 
//do something 
die(); 
} 
add_action('wp_ajax_myFunction', 'myFunction'); 
add_action('wp_ajax_nopriv_myFunction', 'myFunction'); 

И наконец, javascript Код:

<script type="text/javascript"> 
jQuery('#newCustomerForm').submit(ajaxSubmit); 

function ajaxSubmit(){ 

var newCustomerForm = jQuery(this).serialize(); 

jQuery.ajax({ 
type:"POST", 
url: "/wp-admin/admin-ajax.php", 
data: newCustomerForm, 
success:function(data){ 
jQuery("#feedback").html(data); 
} 
}); 

return false; 
} 
</script> 
0

Для выяснения, нет никакой необходимости как echo и exit (или die) в то же время, так как exit и die отзовется из ответа. Я включил важные изменения в функцию процесса Ajax ...

function ajaxschool_process() { 
    $response = "Thanks. Everything is ok."; 
    exit(json_encode($response)); 
} 
Смежные вопросы