私はWordPressプラグインを書き込もうとしていますが、私はバンプを見つけました。
背景:私が使用しているmySQL DBにいくつかのデータがあります(各行には固有のIDと追加したその他の情報があります)。私はを使用してDBを検索することができます
$heads = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}costumesdb WHERE location = 'head'", ARRAY_A);
そして、を使用してユーザーにフォームの一部の情報を表示します(これは5つの異なるドロップダウンのうちの1つですが、それらはすべて同じ方法で作成されます)。
<form id="createacostume" action= "admin-ajax.php" method="post">
Head: <select name="head">
<?php foreach ($heads as $head) { ?>
<option value="<?php echo $head['id'] ?>"><?php echo $head['shopName'] . " - " . $head['pieceName'] ?></option>
<?php } ?>
</select>
<input type="submit">
フォームデータをサーバーに送信するためのスクリプトは次のとおりです。
<script type='text/javascript'>
jQuery.ajax({
type: "POST",
url: ajax_url,
data: { action: 'my_action' , param: 'st1' }
}).done(function( msg ) {
alert( "Data Saved: " + msg.response );
});
</script>
私のphpファイルserversideにあります:
add_action('wp_ajax_my_action', 'my_ajax_action_function');
function my_ajax_action_function(){
$reponse = array();
if(!empty($_POST['param'])){
$response['response'] = "I've get the param a its value is ".$_POST['param'].' and the plugin url is '.plugins_url();
} else {
$response['response'] = "You didn't send the param";
}
header( "Content-Type: application/json" );
echo json_encode($response);
exit();
問題:action = "admin-ajax.php"をフォームに設定すると、admin-ajax.phpページに "..."が表示されます。 0 "応答.
WordPress管理者ページのフォームからデータを取得して処理する方法
私はそれを解決して、コードを書き直しました:
jQuery(document).ready(function() {
jQuery('#createacostume').submit(function( event ) {
event.preventDefault();
var aForm = jQuery(this);
var bForm = aForm.serializeArray();
bForm.Push({name: 'action', value: 'myAjaxFunction'});
jQuery.ajax({
url: ajaxurl,
type: "POST",
data: bForm,
success: function(resp) {
alert("Thank you for your post. We will review it and approve it shortly" + resp);
},
error: function( req, status, err ) {
alert( 'something went wrong, Status: ' + status + ' and error: ' + err );
}
})
.fail(function() {
alert("error");
})
;
return false;
});
});
あなたが呼び出しているajax関数をフォームにプッシュする必要があります。