как отобразить вывод JSON, извлеченный из базы данных Oracle с переносами строк - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть HTML-страница с одним пользовательским вводом и одной кнопкой. После нажатия на кнопку мы можем получить другие данные, связанные с этим пользователем, из базы данных Oracle. я определил свой код на отдельной странице php (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() {
        $userid =$_POST["userid"];
        $sql = "SELECT REQUEST_TIME,WORKFLOW_NAME,EVENT_MESSAGE
                            FROM AUTH_LOGS WHERE USERID = '".$userid."'";
        //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; 
        }
            echo json_encode($json_array);
    }

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

Я делаю это с помощью асинхронного метода post, определяющего файл javascript (script.js)

$(document).ready(function(){
    $("#mybtn").click(function(e){
        e.preventDefault();
		var userid = $("#userid").val();
		
        //$.post("index2.php", {"userid" : userid})
		
		var posting = $.post( 'index2.php', {"userid" : userid});	
		posting.done(function( res ) {	
			
			var response = $.parseJSON(res);
			$('#rawResponse').text(response);	
		});	

    });
})

У меня много данных для одного пользователя. И выходной дисплей выглядит так: 03-SEP-18, softOtpCheck, проверка OTP пройдена, 03-SEP-18, createAuthenticatedSession, сеанс yoya создан., 03-SEP-18, createAuthenticatedSession, сеанс yoya создан., 03-SEP-18, oamAuth, собран файл cookie контекста OAM ., 03-SEP-18, softOtpCheck, проверка OTP пройдена, 03-SEP-18, createAuthenticatedSession, сеанс yoya создан., 03-SEP-18, createAuthenticatedSession, сеанс yoya создан., 03-SEP-18, oamAuth, контекст OAM печенье собрано.

Но я хочу это как:

03-SEP-18, softOtpCheck, проверка OTP пройдена,

03-SEP-18, createAuthenticatedSession, сеанс yoya создан.,

03-SEP-18, createAuthenticatedSession, сеанс yoya создан.,

03-SEP-18, oamAuth, собран файл cookie контекста OAM.,

03-SEP-18, softOtpCheck, проверка OTP пройдена,

03-SEP-18, createAuthenticatedSession, сеанс yoya создан.,

03-SEP-18, createAuthenticatedSession, сеанс yoya создан.,

03-SEP-18, oamAuth, собран файл cookie контекста OAM.

Как отобразить вывод в новой строке?

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Я полагаю, вы хотите изменить

$('#rawResponse').text(response);

на

<code>$('#rawResponse').html('<pre>' + JSON.stringify(response, null, 2) + '
);

См. JSON.stringify и включающие теги pre прекрасно отобразят возвращаемое значение.В качестве альтернативы вы также можете поместить его в textarea, он также будет правильно отображать новые строки.

0 голосов
/ 14 сентября 2018

Если вы хотите отобразить данные json, вы можете вернуть предварительно подтвержденные данные с символами новой строки, используя JSON_PRETTY_PRINT

echo json_encode($json_array, JSON_PRETTY_PRINT);
...