WPプラグインでオンラインのコーセをフォローするプラグインを作成しようとしています。WordPressプラグインのajaxに関する問題
Iamはプラグインのajax部分(電子メールリストビルダ)に重大な問題を抱えています。
これは、ローカルホスト上のいくつかのPHPコードを実行すると警告ウィンドウの成功/エラーメッセージを表示するようになっている私の.js jQueryのコードです:
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の一部(はい、subscribtion Bは意図的です。私はそれを文法的に問題があったので、すべてのケースでBに固執する方が簡単だと決めました)。それは管理エリアで、サブスクリプション・ポストに新しいサブスクリプションを保存し、その後にsuccesss /エラー・メッセージを返して:その完全にコードの行数百人とコードが正常に動作しているがため
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');
}
IAMがplb_save_subscribtion機能を示していません。 json形式をクライアントに送信します。
jQueryが今行う必要があるのは、ajax経由でこの投稿を行い、同じplb_save_subscribtion応答クライアントをアラートウィンドウに挿入することです。
私はこの問題を解決しようと努力していますが、役に立たなかったので、一日中グーグルで過ごしました。アイデアがないので、ここに投稿してください。このコードに何か問題がありますか?そうでない場合は、問題を探しているはずです(コードはコピー/ペーストされていて正常に動作するはずですが、そうではありません)。私が関数の上部に簡単な警告メッセージを入れたら、警告メッセージが表示されます。しかし、私がフォーム上でsubmitを押すと、ページがリロードされ、私は.jsonにメッセージを返します。警告ウィンドウも、ajaxもありません。誰か?
コードをコピー/貼り付けするためではありません。どのようにjQueryファイルをエンキューしていますか?wp_ajax_youractionが実行されてadmin URLに対応していますか? jsonエラーが発生した場合は、エラーが発生しています。 – Benoti
私は** action = plb_save_subscribtion **は** action = plb_save_subscription **であるべきだと思います(しかし、スペルミスはアクションと一貫しているかもしれません)。実際にはサーバー部分のないAJAXリクエストの問題は実際には記述されていません。 –