如何使这个表单在提交时做两件事(AJAX和PHP邮件)?
这两种表单提交function都可单独工作,但如果我同时执行它们则不会。
//first, post results to a Google Spreadsheet $('#submit').on('click', function(e) { var jqxhr = $.ajax({ url: url, //google sheet URL method: "GET", dataType: "json", data : $form.serializeArray() }); });
AJAX还没有完成,因为表单提交比AJAX更快。
如果你想同时做两个请求,然后是表单提交,你可以这样做:
$('#submit').on('click', function(e) { e.preventDefault(); // prevent form submission var jqxhr = $.ajax({ url: url, //google sheet URL method: "GET", dataType: "json", data : $form.serializeArray(), success: () => { $("#timesheet").submit(); // submit the form when the ajax is done } }); });
回答OP的评论:
问题可能是,如果在php.ini文件中关闭了enable_post_data_reading
,则不会填充$_POST
变量。 要解决此问题,请尝试使用php://input
而不是$_POST
:
$data = file_get_contents("php://input"); $response = json_decode($data, true ); // True converts to array; blank converts to object $submit = $response["submit"]; if ($submit) { // Your Logic for creating the email }
将一个SUBMIT链接到onclick事件。
//first, post results to a Google Spreadsheet $('#submit').on('click', function(e) { var jqxhr = $.ajax({ url: url, //google sheet URL method: "GET", dataType: "json", data : $form.serializeArray() }); //Then, chain a submit! }).submit();