首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >通过Ajax运行php函数

通过Ajax运行php函数
EN

Stack Overflow用户
提问于 2018-08-25 20:40:02
回答 1查看 55关注 0票数 -2

我在html上有这样的按钮:

代码语言:javascript
复制
<button class="uk-button uk-button-primary uk-modal-close confirm-rules" type="button" onclick="sendStatus('accept_rules')">Rozumiem</button>

当我点击按钮的时候,php中的函数就会被调用。我试着用ajax这样做:

代码语言:javascript
复制
    <script type="text/javascript">
    function sendStatus(status) {
        $.ajax({
            method: "POST",
            url: "Controllers/Core/Dashboards/Admin/Dashboard.php",
            data: { status: status }
        }).done(function( msg ) {
            alert("Cookie saved:" + msg );
        });
    }
</script>

问题出在php文件上,因为它看起来像这样:

代码语言:javascript
复制
    <?php

declare(strict_types=1);

namespace App\Controllers\Core\Dashboards\Admin;

use App\Controllers\Controller;

use App\Core\SessionManagement;
use App\Core\Request;
use App\Core\Cookies;

class AdminDashboard extends Controller
{

    private $cookies;

    /**
     * AdminDashboard constructor.
     * @param Cookies $cookies
     */
    public function __construct(Cookies $cookies)
    {
      $this->cookies = $cookies; 
    }

    public function acceptDashboardBox()
    {
        if ( isset($_POST['status']) )
        {
            $this->cookies->add( $_POST['status'], 'true', 'time() + (365 * 24 * 60 * 60)');
        }
    }

    /**
     *
     */
    public function index() : void
    {

        Controller::renderView('Core/Dashboards/Admin/Dashboard');

    }

}

按钮必须对类AdminDashboard运行函数acceptDashboardBox()。我怎么能做到这一点?

EN

回答 1

Stack Overflow用户

发布于 2018-08-26 06:00:22

当调用您的文件Controllers/Core/Dashboards/Admin/Dashboard.php时,不会发生任何事情,因为没有调用函数acceptDashboardBox()或此文件中的任何其他内容。

请始终确保您的PHP类具有您当前所在文件的名称(PSR-4)。您的类名是AdminDashboard,因此将文件命名为AdminDashboard.php以避免混淆。此外,通常的做法是对单击事件使用Event Listeners,而不是调用函数onclick=

要让PHP只调用你的函数acceptDashboardBox(),你需要一个新的端点/文件来做与你的函数相同的事情。

我建议您返回一个带有状态的json,并捕获异常,如果某个异常指示发生了错误,就会设置状态。您可以检查javascript中的json,并检查操作是否成功。类似于:

代码语言:javascript
复制
{
    status: "success"
}

代码语言:javascript
复制
{
    status: "failure"
}

会做这笔交易。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52017409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档