2014-12-04 2 views
1

надеются, что вы можете вести меня, я пытаюсь запустить этот учебник: http://www.inkthemes.com/how-to-use-ajax-in-wordpress-for-data-insertion/#WordPress Ajax не обновление базы данных

Это мой Wordpress Plugin Javascript:

jQuery(document).ready(function(){ 
    jQuery("#submit").click(function(){ 
     console.log("click caught");//this bit works 
     var name = jQuery("#dname").val(); 
     jQuery.ajax({ 
      type: 'POST', 
      data: {"action": "post_word_count", "dname":name}, 
      success: function(data){ 
       alert(data);//this alert appears full of html 
      } 
     }); 
    }); 
}); 

это плагин PHP:

function show_form(){ 

echo "<form>"; 
echo "<label>Name</label>"; 
echo "<input type='text' id='dname' name='dname' value=''/><br/>"; 
echo "<input type='button' id='submit' name='submit' value='Submit'/>"; 
echo "</form>"; 
} 
add_action('the_content', 'show_form'); 



function post_word_count(){ 

$name = $_POST['dname']; 
global $wpdb; 
$wpdb->insert(
    'bio', 
    array(
     'bio_surname' => $name 
    ), 
    array(
     '%s' 
    ) 
); 

die(); 
return true; 
} 
// 
add_action('wp_ajax_post_word_count', 'post_word_count'); // Call when user logged in 
add_action('wp_ajax_nopriv_post_word_count', 'post_word_count'); // Call when user in not logged in 
?> 

так что то, что я нахожу в своем отладчике, состоит в том, что данные POST консоли - это «dname», представленные в форме ввода. однако таблица базы данных «bio» не обновляется. все, что происходит, - это предупреждение, заполняемое всем html сайта, на котором работает. то есть. RESPONSE в консольном отладчике представляет собой массивный html-текст.

Итак, я не понимаю, почему данные = мой сайт html И почему таблица «bio» не обновляется.

ответ

0

в плагине файле PHP сначала добавить файл сценарий Java, как этого

wp_enqueue_script('ajax-script-xyz','***javascript file path***', array('jquery')); 
wp_localize_script('ajax-script-xyz', 'ajax_object', 
         array(
          'ajax_url' => admin_url('admin-ajax.php'), 
          ) 
         ); 

Plugin Javascript: добавить админ ajax.php файловой URL-адрес

jQuery(document).ready(function(){ 
    jQuery("#submit").click(function(){ 
     console.log("click caught");//this bit works 
     var name = jQuery("#dname").val(); 
     jQuery.ajax(ajax_object.ajax_url, {//**add admin-ajax.php fill url ** 
      type: 'POST', 
      data: {"action": "post_word_count", "dname":name}, 
      success: function(data){ 
       alert(data);//this alert appears full of html 
      } 
     }); 
    }); 
}); 

для кляра под положением проверить эту ссылку http://codex.wordpress.org/AJAX_in_Plugins

+0

спасибо! отлично работает сейчас :) –

0

Вы не определили URL-адрес в ajax:

jQuery(document).ready(function(){ 
    jQuery("#submit").click(function(){ 
     var name = jQuery("#dname").val(); 
     jQuery.ajax({ 
      type: 'POST', // Adding Post method 
      url: ajaxurl, // Including ajax file 
      data: {"action": "post_word_count", "dname":name}, // Sending data dname to post_word_count function. 
      success: function(data){ // Show returned data using the function. 
       alert(data); 
     }); 
    }); 
}); 
Смежные вопросы