HTMLでは、私のFORM action = ""とmethod = "POST"です。
私の電話で私は持っています:
var array_dados = [];
array_dados[0] = $("#form_email").val();
array_dados[1] = $("#form_nome").val();
array_dados[2] = $("#form_para").val();
array_dados[3] = $("#form_assunto").val();
array_dados[4] = $("#form_mensagem").val();
var dataParam = { action: 'enviaemailfoto',
dados : array_dados };
var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
alert(dataParam);
$.ajax({
type: "POST",
url: ajaxurl,
data: dataParam,
dataType: "text",
})
.done(function(res) {
alert( "sucess " +res);
})
.fail(function(res) {
alert( "error " +res);
})
.always(function(res) {
alert( "complete " +res);
});
Ajaxコードでは:
add_action('wp_ajax_enviaemailfoto', 'enviaemailfoto_callback');
function enviaemailfoto_callback(){
header('HTTP/1.1 200 OK'); /* attempt to make it work */
require 'wp-load.php'; /* attempt to make it work */
$dados = $_POST['dados'];
$email = $dados[0];
$nome = $dados[1];
$para = $dados[2];
$assunto = $dados[3];
$str = $dados[4];
$anexo = $dados[5];
$mensagem = str_replace("\n", "<BR />", $str);
/* prepare headers, send emails */
echo json_encode(array('type'=>'done',
'text' => 'Mensagem enviada com sucesso'.$assunto));
wp_die(); }
すべて正常に実行されます。 3つのアラートが表示されます。ajaxの実行前に1回、実行(完了/完了)後に2回です。しかし、3番目のものの後に、見つけられない404ページを開いています。私はこの問題なしで他のajax呼び出しをしました、そしてヘッダー( 'HTTP/1.1 200 OK')を含めて、それを動作させるためにここで 'wp-load.php'が必要です。成功せずに。
コメントで述べたように、あなたはどこへ行くべきかわからないかもしれないフォームを持っています。一般に、送信するフォームがある場合は、フォームのaction
がフォーム送信と次のページを処理するため、AJAXは必要ありません。データベースから何かが必要な場合 以前 フォームが送信される場合(ユーザーが選択した商品の利用可能なサイズと色など)、AJAXが必要です。フォーム全体のコードを見ることができないので、確実に言うことはできませんが、この状況ではAJAXを必要としない可能性があり、AJAXを使用することが失敗の原因です。