jQuery Ajax возвращает правильный ответ, но после перенаправления на ошибку 404

В 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(); } 

Все выполняется правильно. Отображаются три предупреждения: 1 до и 2 после (успешный / завершенный) ajax execute. Но после третьего, открывается 404 страница не найдена. Я сделал другой вызов ajax без этой проблемы и включил заголовок ('HTTP / 1.1 200 OK') и потребовал 'wp-load.php', пытаясь заставить его работать. Безуспешно.

Как отмечается в комментариях, у вас есть форма, которая может не знать, куда идти. В общем, если у вас есть форма для отправки, вам не нужен AJAX, потому что действие формы будет обрабатывать отправку формы, а также следующую страницу. Если вам нужно что-то из базы данных до отправки формы (например, доступные размеры и цвета продукта, выбранных пользователем), тогда требуется AJAX. Поскольку мы не можем видеть код для всей формы, мы не можем точно сказать, но, возможно, вам не нужен AJAX в этой ситуации, и использование AJAX – это то, что вызывает ваш отказ.