Как передать только текстовую часть HTML-кода `(исключая теги)` на страницу php, используя метод get из ajax - PullRequest
1 голос
/ 04 октября 2019

Я хочу экспортировать данные mysql в файл excel через ajax

Код Ajax

    $('#dateBox').change(function(){
        $('#getData').html('loading...');
        var date = $('#dateBox').val();
        var limit = $('#sortByNo').val();

        //set download button attributes
        $('#exportSilver').attr('data-date',date);

        if(date != ''){
        var action = 'getDataFromDate';
        $.ajax({
           url: 'fetch_payouts.php',
           method: 'post',
           data: {date:date,action:action,limit:limit},
           success:function(data){
               $('#getData').html(data);
               window.location.href = 'download.php?data='+data+'';
           }
        });
        }
        else{
            $('#getData').html('');
        }
    });

файл download.php

<?php
if(isset($_GET['data'])){

    $data = $_GET['data'];

    // The function header by sending raw excel
    header("Content-type: application/vnd-ms-excel");
    // Defines the name of the export file "codelution-export.xls"
    header("Content-Disposition: attachment; filename=insway.xls");
    echo $data;
}
?>

Работает, но проблема в том, что он также экспортирует теги html в файл excel, и в таблице базы данных есть две строки, и он экспортирует только одну строку и два столбца из второй строки

Это вывод файла Excel

Ответы [ 2 ]

0 голосов
/ 04 октября 2019

Вы можете использовать функцию strip_tags PHP для данных перед их отображением.

Может быть так: $ data = array_map (trim (strip_tags ($ data)) *

Так выглядит новый кодкак:

<?php
if(isset($_GET['data'])){

    $data = $_GET['data'];

    // The function header by sending raw excel
    header("Content-type: application/vnd-ms-excel");
    // Defines the name of the export file "codelution-export.xls"
    header("Content-Disposition: attachment; filename=insway.xls");

    $data = array_map(trim(strip_tags($data));

    echo $data;
}
?>
0 голосов
/ 04 октября 2019

Вы можете удалить все теги из массива $ _GET ['data']

попробуйте следующий код:

$data = array_map(function($v){
    return trim(strip_tags($v));
}, $_GET['data']);

Или просто

$data = array_map( 'strip_tags', $_GET['data'] );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...