0

我有 1php页建立与数据库的连接并使用数组从数据库中获取数据JSON(此代码工作正常)。

index2.php

<?php

class logAgent
{
    const CONFIG_FILENAME = "data_config.ini";

    private $_dbConn;
    private $_config;

    function __construct()
    {
        $this->_loadConfig();


        $this->_dbConn = oci_connect($this->_config['db_usrnm'],
            $this->_config['db_pwd'],
            $this->_config['hostnm_sid']);
    }
    private function _loadConfig()
    {
        // Loads config
        $path = dirname(__FILE__) . '/' . self::CONFIG_FILENAME;
        $this->_config = parse_ini_file($path) ;
    }
    public function fetchLogs() {

        $sql = "SELECT REQUEST_TIME,WORKFLOW_NAME,EVENT_MESSAGE
                            FROM AUTH_LOGS WHERE USERID = '".$uid."'";

        //Preparing an Oracle statement for execution
        $statement = oci_parse($this->_dbConn, $sql);

        //Executing statement
        oci_execute($statement);
        $json_array = array(); 

        while (($row = oci_fetch_row($statement)) != false) {
            $rows[] = $row;
            $json_array[] = $row; 
        }
            json_encode($json_array);   
    }

}

$logAgent = new logAgent();
$logAgent->fetchLogs();
?>

我又创建了一个 HTML 页面,我从用户那里获取一个输入(用户 ID)。基于用户 ID,我正在从数据库中获取有关该用户的更多数据。一旦用户输入用户 ID 并单击“Get_Logs”按钮,将从数据库中获取更多数据。

<!DOCTYPE html>
<html>
    <head>
        <title>User_Logs</title>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
        <script src="script.js"></script>
    </head>

    <body>
    <?php
        if ($_SERVER["REQUEST_METHOD"] == "POST"){
            $uid =$_POST["USERID"];

        }
        ?>
        <form method="POST" id="form-add" action="index2.php">
            USER_ID: <input type="text" name="USERID"/><br>
            <input type="submit" name="submit" id = "mybtn" value="Get_Logs"/>
        </form>
    </body>
</html>

我的脚本:

$(document).ready(function(){
    $("#mybtn").click(function(){
        $.POST("index2.php", {
            var myVar = <?php echo json_encode($json_array); ?>;
        });

        });
})

这段代码工作正常。但是它是同步的POST,它正在刷新我的页面,但是我想使用异步POST。我怎样才能做到这一点?我从未做过这种异步 POST 编码。请帮忙。

我试过了,它没有抛出错误,但没有输出。有人可以检查我的代码中有什么问题吗?

$(document).ready(function(){
    $("#mybtn").click(function(e){
        e.preventDefault();
        $.post("index2.php", {data :'<?php echo json_encode($json_array);?>'
        })

        });
})

4

2 回答 2

1

我假设 index2.php 是另一个 php 页面(不一样),它正在返回您要在运行此代码的页面上更新的数据。

$(document).ready(function(){
    $("#mybtn").click(function(e){
        e.preventDefault();
        $.POST("index2.php", {
            var myVar = "<?php echo json_encode($json_array); ?>";
        });

        });
})

您需要在单击处理程序中添加 preventDefault 以防止提交表单。这将停止要提交的表单和要重新加载的页面。在 POST 中,您可以设置逻辑以使用更新的数据刷新页面(无需重新加载)

于 2018-09-11T08:42:06.983 回答
0

你可以试试这个,

$(document).ready(function(){
   $("#mybtn").click(function(event){
      event.preventDefault();  
      $.POST("index2.php", {
          var myVar = <?php echo json_encode($json_array); ?>;
    });

  });
});

同样在 HTML 中action删除form

<form method="POST" id="form-add">
    USER_ID: <input type="text" name="USERID"/><br>
    <input type="submit" name="submit" id = "mybtn" value="Get_Logs"/>
</form>

编辑:你能试试这个吗?第二个参数 forpost接受一个 object 。

 $(document).ready(function(){
        $("#mybtn").click(function(event){
        event.preventDefault();  
            var myVar = <?php echo json_encode($json_array); ?>;
            console.log(myVar);
            $.post("submit.php", {
                'id': myVar
            },function(data){
                console.log(data);
            });
        });
    });
于 2018-09-11T08:42:14.843 回答