【问题标题】:How to call PHP function when AJAX query success [closed]AJAX查询成功时如何调用PHP函数[关闭]
【发布时间】:2020-08-01 13:24:30
【问题描述】:

我在我的项目中使用了 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 函数的原因。但是当我尝试我的代码时,计算函数不会等待成功。直接触发就好了。

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

【问题讨论】:

  • 完成后执行 ajax。意思是,在success函数中执行ajax代码。您正在尝试在成功代码中调用一个 php 函数,但该函数不起作用。您应该在成功时再执行一次 ajax。或者将你想要执行的代码放在成功函数中。代替&lt;?php calc()?&gt; 放置完整的功能代码

标签: javascript php jquery ajax codeigniter-3


【解决方案1】:

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

当您编写诸如&lt;?php calc(); ?&gt; 之类的内容时,将始终在生成页面时(在开始时)调用它,并且结果将作为纯文本包含在您插入该代码的确切位置。

您要做的是在某些条件下(例如在您的 $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());

【讨论】:

  • 我知道了。谢谢您的回答。真的很感激。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-27
  • 1970-01-01
  • 1970-01-01
  • 2013-08-04
  • 1970-01-01
  • 2021-01-11
  • 2015-10-16
相关资源
最近更新 更多