2014-12-04 145 views
1

希望你能指導我,我試圖運行此教程: http://www.inkthemes.com/how-to-use-ajax-in-wordpress-for-data-insertion/#WordPress的AJAX沒有更新數據庫

這是我的WordPress的插件使用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文本。

所以,我不明白爲什麼data =我的網站的HTML和爲什麼表「生物」沒有更新。

在插件php文件

回答

0

首先添加您的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'), 
          ) 
         ); 

插件的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

謝謝!現在精美地工作:) – 2014-12-04 05:50:03

0

您尚未在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); 
     }); 
    }); 
});