AJAX查询成功时如何调用PHP函数

How to call PHP function when AJAX query success

我在我的项目中使用了 AJAX。下面的代码。

           $.ajax({
             type: 'POST',
             data: ...,
             success: function(data) {<?php calc(); ?>},
             error: function(jqXhr, textStatus, errorMessage) {
             console.log('Error' + errorMessage);
             }
           });

我需要在同一页面上获取数据而无需重新加载任何页面,这就是为什么我不在 AJAX 中使用 url 的原因。当 AJAX 成功时,我想触发名为 calc 的函数。 calc 函数中的计算,基于来自 ajax 的数据,还有一些涉及这些计算的数据库查询,这就是为什么我必须使用 PHP 函数。但是当我尝试我的代码时,计算函数不会等待成功。直接触发就好了

怎么了我听不懂。我该如何处理这种情况。提前致谢!

它并不像您描述的那样工作。你不能像这样弄乱 JS 和 PHP 部分。

当您编写类似 <?php calc(); ?> 的内容时,它总是会在生成页面时(在开始时)被调用,并且结果将作为纯文本包含在您插入该代码的确切位置。

你想要做的是在某些条件下(比如在你的 $ajax 调用成功之后)将 calc() 结果获取到页面。您需要向另一个 PHP 脚本发出额外的 $ajax 请求,该脚本将调用 calc() 函数并输出结果。

所以你需要把东西分成 JavaScript 部分和 PHP 部分,像这样:


function getResultOfCalc(callback){
    $.ajax({
            url: "calc_php_script.php"
            type: 'GET',
            success: function(data) {
                        //send received data to callback function
                        callback(data);
            },
    });
}

//Next your code
$.ajax({
            type: 'POST',
            data: ...,
            success: function(data) {
                getResultOfCalc(function(calcResult){
                    //here you get your calc data after your initial ajax is success
                    console.log(calcResult);
                });
            },
            error: function(jqXhr, textStatus, errorMessage) {
            console.log('Error' + errorMessage);
            }
});

然后您的 php 脚本必须命名为 calc_php_script.php

echo calc();

根据 calc() 的输出,您可能希望将 calc() 结果编码为 JSON:

echo json_encode(calc());