Javascript 是否可以从AjaxEvent运行PHP脚本?

Javascript 是否可以从AjaxEvent运行PHP脚本?,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我想知道,在调用AJAX事件时是否可以运行PHP文件的脚本 我在想,如果在AJAXerror上,它会将数据发送到error.php文件并记录错误,向管理员发送电子邮件,以及我想要的任何其他通知 很明显,我可以通过javascript实现这一点,但我想知道,当已经向PHP文件发送AJAX调用时,是否可以对每个函数进行移植 $.ajax({ 方法:“张贴”, 数据:mb_ajax_form_数据, contentType:false, processData:false, 错误:函数(错误){ }

我想知道,在调用AJAX事件时是否可以运行PHP文件的脚本

我在想,如果在AJAX
error
上,它会将数据发送到
error.php
文件并记录错误,向管理员发送电子邮件,以及我想要的任何其他通知

很明显,我可以通过javascript实现这一点,但我想知道,当已经向PHP文件发送AJAX调用时,是否可以对每个函数进行移植

$.ajax({
方法:“张贴”,
数据:mb_ajax_form_数据,
contentType:false,
processData:false,
错误:函数(错误){
}
});
error.php

//发送电子邮件
邮件();
//添加到日志文件
fopen();
//等等。
你可以这样做 发布表单值的第一个函数

$(document).ready(function(){

/*Post function*/

 $('#comment_form').on('submit', function(event){
  event.preventDefault();
  var form_data = $(this).serialize();
/*Ajax post here */


/* And second function */

 myfunction();
)};
然后在这里执行第二个函数,当第一个函数成功时,它将启动第二个函数

function myfunction(){

  Now it will do what you told to do, send ping back

  }

)};

最简单的方法是运行XHR请求

在PHP中为错误脚本创建此文件

   <?php
// Headers
header('Access-Control-Allow-Origin: *');
header('Content-Type: application/json');
header('Access-Control-Allow-Methods: POST');
header('Access-Control-Allow-Headers: Access-Control-Allow-Headers,Content-Type,Access-Control-Allow-Methods, Authorization, X-Requested-With');

if($_POST)
{
echo json_encode($_POST);
// USE this portion if it is a success 
//Note weather your data passed or failed you have to respond back to the XHR request in the front end with json_encode...
//Your PHP code 

  echo json_encode(
      array('message' => 'Post Created')
 );

}else{

echo json_encode(
        array('message' => 'Post Not Created')
);
}



?>
以及调用XHR的html表单示例

    <form id='theForm'>
<div id="rows">
<div class="sitting-days" style="display:flex; justify-content:center; margin-bottom:20px;">
    <div class="select-date" style="margin-right:30px;">
        <h4 style="text-align:center;">Select Date</h4>
        <input type="date" id="house-sitting-date" name="house_sitting_date" value="">
    </div>
    <div class="yes-no">
        <h4 style="text-align:center;">Yes/No</h4>
        <select name="house_sitting_date_yes_no" id="house-yes-no" style="height:24px;">
            <option value="nada" selected>Please choose an option</option>
            <option value="yes">Yes</option>
        </select>
      </div>
   </div>
</div>
<input type='button' value='Submit' id='xhrStart'>

选择日期
是/否
请选择一个选项
对

这与我们在rest API中使用的方法相同,应该有助于实现错误和脚本处理的目的

Ajax是JavaScipt,那么您所说的搭载是什么意思呢?您的意思是@mplungjan添加了一些代码,希望能够澄清客户端是客户端。服务器端就是服务器端。这是否回答了您的问题?谢谢你,我使用了你的代码,还有第二个ajax函数,并将它放在了错误部分,那就是error.php文件。我刚刚发布了一个链接,检查ajax函数,你会明白我的意思。很高兴我帮了忙。我看不出有什么理由默认启用CORS,也没有什么正当的理由。。。OP询问ajax,可能是从同一个域运行代码。但是,如果他正在创建一个供许多项目使用的中心API,例如电子邮件工具或一组他将在不同系统和API中使用的类,那么最好将其放入其中,以避免整个库的重复。一些初级程序员对头函数没有很好的理解,因此将其包括在内也是很有价值的练习。
let xtart = document.getElementById('xhrStart');


xtart.addEventListener('click',function(){console.log('Xstarted')

            // First iterate over the form and get all the form Values
            var element = {};
            var data = new FormData(theForm);

            // Display the key/value pairs
            for(var pair of data.entries()) {
                   // console.log(pair[0]+ ', '+ pair[1]);
                   element[ pair[0].toString() ] = pair[1];
            }
            console.log(element);


            // Time to send the control over to PHP to do its magic

            let xhr = new XMLHttpRequest();

            xhr.open('POST', 'post.php');
            xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");


            xhr.responseType = 'json';
            xhr.send(JSON.stringify(element));
            //xhr.send();

            // the response is {"message": "Hello, world!"}
            xhr.onload = function() {
              let responseObj = xhr.response;
              alert(responseObj.message); // Hello, world!
 };



 });
    <form id='theForm'>
<div id="rows">
<div class="sitting-days" style="display:flex; justify-content:center; margin-bottom:20px;">
    <div class="select-date" style="margin-right:30px;">
        <h4 style="text-align:center;">Select Date</h4>
        <input type="date" id="house-sitting-date" name="house_sitting_date" value="">
    </div>
    <div class="yes-no">
        <h4 style="text-align:center;">Yes/No</h4>
        <select name="house_sitting_date_yes_no" id="house-yes-no" style="height:24px;">
            <option value="nada" selected>Please choose an option</option>
            <option value="yes">Yes</option>
        </select>
      </div>
   </div>
</div>
<input type='button' value='Submit' id='xhrStart'>