私は私のFormからajaxを通してmysqlデータベースにデータを "POST"しようとしています。このコードは、 "after_setup_theme"アクションにフックされています。
add_action("wp_ajax_ajax_anmeldung", "ajax_anmeldung");
add_action("wp_ajax_nopriv_ajax_anmeldung", "ajax_anmeldung");
function ajax_anmeldung() {
echo "<script>
alert('hey');
</script>";
die();
}
そしてこれがそれを呼び出すJSコードです。
$('#teilnahme_form').submit(function(e){
e.preventDefault();
var name = document.getElementById("name").value;
jQuery.ajax({
type:"POST",
url: window.ajaxurl,
data: {
action: "ajax_anmeldung",
name : name
},
success:function(data){
alert(data);
}
});
});
これを実行すると、 "0"が返されます。
試したとき: http://my-domain.com/wp-admin/admin-ajax.php?action=ajax_anmeldung 0 ".
私はこのトピックを取り巻く他のすべての記事をここに投稿しましたが、私を助けてくれるものは何もないようです、または私は本当に重要なことを見逃していました。
乾杯
これを試してください。
テーマのfunctions.phpに以下を追加してください。
add_action( 'init', 'tnc_aj_scripts' );
function tnc_aj_scripts() {
wp_register_script( "ajax_anmeldung_script", get_template_directory_uri(). '/my-ajax.js', array('jquery'), '1.0', true);
wp_localize_script( 'ajax_anmeldung_script', 'mYAjax', array( 'ajaxurl' => admin_url( 'admin-ajax.php' )));
wp_enqueue_script( 'jquery' );
wp_enqueue_script( 'ajax_anmeldung_script' );
}
add_action("wp_ajax_ajax_anmeldung", "ajax_anmeldung");
add_action("wp_ajax_nopriv_ajax_anmeldung", "ajax_anmeldung");
function ajax_anmeldung() {
$result['one'] = 'Hey';
$result = json_encode($result);
echo $result;
die();
}
テーマディレクトリにmy-ajax.jsという.jsファイルを作成し、そのファイル内に次のファイルを配置します。
jQuery('#teilnahme_form').submit(function(e){
e.preventDefault();
var name = document.getElementById("name").value;
jQuery.ajax({
type:"post",
dataType : "json",
url : mYAjax.ajaxurl,
data: {
action: "ajax_anmeldung",
name : name
},
success:function(data){
alert(data.one);
}
});
});
リクエストタイプとして "POST"を使用する場合は、データパラメータ内の "action"を除外し、それをURLに追加します。
$('#teilnahme_form').submit(function(e){
e.preventDefault();
var name = document.getElementById("name").value;
jQuery.ajax({
type:"POST",
url: window.ajaxurl + '?action=ajax_anmeldung',
data: {
name : name
},
success:function(data){
alert(data);
}
});
});