2016-11-07 24 views
0

蔭試圖讓插件如下因素對WP插件在線科西嘉。問題與阿賈克斯的WordPress插件

蔭具有與該插件(其電子郵件列表生成器)的AJAX部分嚴重的困難。

這是我的.js jQuery代碼是應該運行在本地主機的一些PHP代碼和一個警報窗口顯示成功/錯誤信息:

jQuery(document).ready(function($){  

    var wpajax_url = document.location.protocol + '//' + document.location.host + 'wordpress_plugin_course/wp-admin/admin-ajax.php?action=plb_save_subscribtion'; 

    $('form.plb-form').bind('submit', function(){ 

     $form = $(this); 
     var form_data = $form.serialize(); 

     $.ajax({ 
      'method':'post', 
      'url':wpajax_url, 
      'data':form_data, 
      'dataType':'json', 
      'cache':false, 
      'success':function(data, textStatus){ 
       if(data.status == 1){ 
        $form[0].reset();  
        alert(data.message); 
       } else{ 
        var msg = data.message +'\r'+ data.error + '\r'; 
        $.each(data.errors,function(key,value){  
         msg += '\r'; 
         msg += '- ' + value; 
        }); 
        alert(msg);     
       } 
      }, 
      'error':function(jqXHR, textStatus, errorThrown){ 

      } 

     }); 

     return false;   
    }); 

}); 

PHP的一部分(是的,訂閱新用B在這是故意的,因爲我在這方面遇到了問題,並且我決定在所有情況下都堅持B)。

add_action('wp_ajax_nopriv_plb_save_subscribtion', 'plb_save_subscribtion');      
add_action('wp_ajax_plb_save_subscribtion', 'plb_save_subscribtion');    
add_action('wp_enqueue_scripts', 'plb_public_scripts');  

function plb_public_scripts(){                
    wp_register_script('profi-list-builder-js-public', plugins_url('/js/public/profi-list-builder.js', __FILE__), array('jquery'),'1.0',true); 
    wp_enqueue_script('profi-list-builder-js-public'); 
} 

蔭沒有顯示plb_save_subscribtion功能,因爲它的數百共行的代碼和代碼工作正常:它節省訂閱新的在管理方面的訂閱後,並在隨後返回successs /錯誤消息。 json格式發送給客戶端。

我所需要的jQuery現在要做的就是通過AJAX做這個帖子,並把同樣的plb_save_subscribtion響應客戶端進入的警告窗口。

我literaly整天都在谷歌上搜索,試圖解決這個問題,但都無濟於事。 Iam出於想法,所以Iam在這裏張貼。這段代碼有什麼問題嗎?如果沒有,我應該在哪裏尋找問題(因爲代碼是複製/粘貼的,應該可以正常工作,但它不會)?如果我在該函數的頂部放置一個簡單的警報消息,則警報消息將顯示爲它應該顯示的內容。但是當我在表單上按提交時,頁面重新加載,我在.json中返回消息,沒有警報窗口,沒有ajax。有人?

+0

這不是因爲你複製/粘貼代碼將運行。你如何排隊jQuery文件,並運行一個wp_ajax_youraction以使其適用於管理網址?如果你得到了json錯誤,那麼你正處於錯誤關閉狀態。 – Benoti

+0

我認爲** action = plb_save_subscribetion **應該是** action = plb_save_subscription **(但也許拼寫錯誤與動作一致)。實際上,沒有服務器部分的AJAX請求問題並沒有真正描述。 –

回答

0

添加在你的插件下面的代碼文件

add_action('wp_enqueue_scripts', 'ajax_test_enqueue_scripts'); 

function ajax_test_enqueue_scripts() { 
    wp_enqueue_script('custom', plugins_url('/custom.js', __FILE__), array('jquery'), '1.0', true); 
    wp_localize_script('custom', 'postCustom', array(
     'ajax_url' => admin_url('admin-ajax.php')) 
    ); 

} 


function plb_save_subscribtion(){ 

    print_r($_POST['form_data']); 

} 
add_action('wp_ajax_nopriv_plb_save_subscribtion', 'plb_save_subscribtion');      
add_action('wp_ajax_plb_save_subscribtion', 'plb_save_subscribtion'); 

添加以下你的js文件(這裏custom.js)

jQuery('form').bind('submit', function(){ 



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


     jQuery.ajax({ 
     url : postCustom.ajax_url, 
     type : 'post', 
     data : { 
      action : 'plb_save_subscribtion', 
      form_data : form_data 
     }, 
     success : function(response) {    
      alert(response); 
     } 
    });   
}); 

嘗試這種方式。您可以在警報窗口中看到表單數據。