如何使这个表单在提交时做两件事(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();