蔭試圖讓插件如下因素對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。有人?
這不是因爲你複製/粘貼代碼將運行。你如何排隊jQuery文件,並運行一個wp_ajax_youraction以使其適用於管理網址?如果你得到了json錯誤,那麼你正處於錯誤關閉狀態。 – Benoti
我認爲** action = plb_save_subscribetion **應該是** action = plb_save_subscription **(但也許拼寫錯誤與動作一致)。實際上,沒有服務器部分的AJAX請求問題並沒有真正描述。 –