Javascript 用ajax调用类方法不起作用

Javascript 用ajax调用类方法不起作用,javascript,php,ajax,Javascript,Php,Ajax,我在html页面中有一个按钮,允许您开始更新数据以显示在表中。 此更新在单击事件时通过ajax调用启动。ajax调用工作正常,只是数据尚未刷新。 通过对代码进行一点测试,我意识到如果我直接启动类的方法重新加载页面,数据就会刷新。 我就是这么做的: <?php if(PermissionManager::isSuperAdmin()){ require_once('controllers/RiTableController.php'); if(isset($_POST[

我在html页面中有一个按钮,允许您开始更新数据以显示在表中。 此更新在单击事件时通过ajax调用启动。ajax调用工作正常,只是数据尚未刷新。 通过对代码进行一点测试,我意识到如果我直接启动类的方法重新加载页面,数据就会刷新。 我就是这么做的:

<?php 
if(PermissionManager::isSuperAdmin()){

    require_once('controllers/RiTableController.php');

    if(isset($_POST['ri']) && $_POST['ri'] == "refresh"){
        RiTableController::refreshRIData();
    }

    ?>
    <script type="text/javascript" src="assets/js/ri_table.js" ></script>
    <script type="text/javascript" src="assets/js/datatables.min.js"></script>

    <script type="text/javascript">

        $(document).ready(function() {
            rendertable(<?php echo json_encode(RiTableController::getDataTableRi())?>);

        });

        function launch_ri() {
            $(".loading").css("display","block");

            $.ajax({
                type:'POST',
                //url:'ri_table_view.php',
                data:"ri=refresh", 
                success: function(data){
                    $(".loading").css("display","none");
                    alert('successful');
                    location.reload();
                }
            });
        };

 </script>

 <div class="row">
    <div class="col-md-6">
     <h1>IR list</h1>
     <h4 type="text" value="">IR tracking list of builds</h4>
 </div>
</div>
<div class="row" style="display: flex;align-items: center;margin-bottom:30px">
    <div class="col-md-2">
     <button type="button" id="launch_ri" name="launch_ri" onClick="launch_ri();" align="right" class="btn btn-default">Refresh List</button>
 </div>
</div>
<div class="row">
    <div class="col-md-12">
     <table style="font-size:12px" width="100%" id="table_RI" class="table table-condensed table-bordered table-hover"></table>
 </div>
</div>
<?php 
}
?>

$(文档).ready(函数(){
可渲染();
});
函数启动_ri(){
$(“.loading”).css(“显示”、“块”);
$.ajax({
类型:'POST',
//url:'ri_table_view.php',
数据:“ri=刷新”,
成功:功能(数据){
$(“.loading”).css(“显示”、“无”);
警报(“成功”);
location.reload();
}
});
};
IR列表
生成的IR跟踪列表
刷新列表
下面是名为

public static function refreshRIData(){

        set_time_limit(180);

        // Insert data in db from Plan
        RITable::insertRiFromTPaln();

        $data_Ri = RITable::gtRiForRefresh();

        for ($i=0; $i < sizeof($data_Ri) ; $i++) { 

            // set RI ref
            $RI = $data_Ri[$i]['ri_ref_ri'];

            // get all transactions impacted by this RI
            $transactions_impacted_result = RITable::getTransactionImpacted($RI);

            // prepare variable to insert in db
            $transactions_impacted = json_encode($transactions_impacted_result);

            // get first transaction impacted
            $transaction_result = RITable::getTransaction($RI);

            $transaction = json_encode(array('pod_id' => $transaction_result['pod_id'], 'pod_name' => $transaction_result['pod_name']));

            // get info of Ri from webservice
            $info_ri = json_decode(WebServiceController::RefreshRI($RI));
            //echo '<pre>'; print_r($info_ri); echo '</pre>';
            $owner = $info_ri->response->owner;

            // format date
            $create_date = new DateTime($info_ri->response->creation_date);
            $create_date = $create_date->format('Y-m-d H:m:i');

            $target_date = new DateTime($info_ri->response->target_correction_date);
            $target_date = $target_date->format('Y-m-d H:m:i');

            // create Pno cache for users
            if (isset($owner)) {
                $cache_to_renew = !Login::cacheToKeep($owner);
            }

            if($cache_to_renew){
                self::reLoadPno($owner);
            }

            // get brand of user in cache pno files
            $brand = RcaviewController::getBrand($info_ri->response->owner);

            // call method to insert data in db
            RITable::updateRI($RI, $info_ri->response->title ,$info_ri->response->current, $issue, $transaction, $info_ri->response->required_for_program, $info_ri->response->owner, $brand, $target_date, $create_date, $transactions_impacted);
        }
        set_time_limit(30);
        return true;
    }

    private static function reLoadPno($owner){
        echo "<script type='text/javascript'>fetchPno('".$owner."');</script>";
    }
公共静态函数refreshRIData(){
设置时间限制(180);
//从计划在数据库中插入数据
RITable::insertRiFromTPaln();
$data_Ri=RITable::gtRiForRefresh();
对于($i=0;$i$transaction_结果['pod_id'],'pod_名称'=>$transaction_结果['pod_名称]);
//从Web服务获取Ri的信息
$info_ri=json_decode(WebServiceController::RefreshRI($ri));
//回显“”;打印($info);回显“”;
$owner=$info\u ri->response->owner;
//格式日期
$create\u date=新日期时间($info\u ri->响应->创建日期);
$create_date=$create_date->format('Y-m-dh:m:i');
$target\u date=new DateTime($info\u ri->response->target\u correction\u date);
$target\u date=$target\u date->format('Y-m-dh:m:i');
//为用户创建Pno缓存
if(isset(所有者)){
$cache_to_renew=!Login::cachetokep($owner);
}
如果($cache\u to\u续订){
self::重新加载pno($owner);
}
//获取缓存pno文件中的用户品牌
$brand=RcaviewController::getBrand($info\u ri->response->owner);
//调用方法在数据库中插入数据
RITable::updateRI($RI、$info\U RI->响应->标题,$info\U RI->响应->当前,$issue,$transaction,$info\U RI->响应->所有者,$brand,$target\U date,$create\U date,$transactions\U);
}
设置时间限制(30);
返回true;
}
私有静态函数重载pno($owner){
echo“fetchPno(““$owner.”);”;
}
我不明白,为什么通过ajax调用方法不起作用,而如果我在没有ajax的情况下调用,它就起作用了。 我想要的是,我可以通过ajax启动php进程。
您知道这个问题吗?

我知道您在成功接收ajax数据后执行location.reload()是错误的。这个命令重新加载文档,就像在ajax调用之前重新启动页面一样


您必须解析ajax调用接收到的数据并显示它们。

“方法不起作用”是对您的问题的错误描述。错误是什么?您是否在网络面板中看到Ajax请求,控制台中是否有错误?您是否添加了调试行以查看是否正在调用内容?
数据:“ri=refresh”
很可能不会发送您想要的内容。发送数据时,您是否检查了
$\u POST
中的内容?您可能正在传递
数据:{ri:refresh}
请阅读并更新您的问题。感谢您必须调试代码并告诉我们您遇到了哪种问题..可能是无关的,但这里似乎有一个输入错误:
//从Plan RITable::insertRiFromTPaln()在db中插入数据您有“Paln”应该是Plan吗?如果没有location.reload(),那么在成功回调函数中尝试console.log(数据)也是同样的问题。然后您将看到ajax调用提供的数据。然后您必须解析这些数据并将其插入页面的DOM中