Problem with json in Angularjs

Asked

Viewed 88 times

3

I am developing a mobile application and am rescuing from the database a list of data.

What happens and between each die always remains one , "comma" and do not know how to remove.

I leave below a print of the happens:

inserir a descrição da imagem aqui

Controller

.controller('ListaEstabelecimentos', function($scope, $http, $stateParams) {
    $http.get("https://www.sabeonde.pt/api/api_estabelecimentos.php?categoria_slug="+$stateParams.catSlug).success(function (data) {
        $scope.estabelecimentos = data;
    });
})

Where I show the dice

<div ng-controller="ListaEstabelecimentos">
   <p ng-bind-html="estabelecimentos"></p>
</div>

Return

<?php

    header('Access-Control-Allow-Origin: *');
    header('Access-Control-Allow-Methods: GET, POST');
    header("Content-type: application/json");

    require_once("../funcoes/funcoes.php");

    $result_cat_locais = $conexao->prepare("SELECT * FROM categorias_estabelecimentos WHERE categoria_slug = :categoria_slug ");
    $result_cat_locais->bindValue(':categoria_slug', $_GET['categoria_slug'], PDO::PARAM_STR);
    $result_cat_locais->execute();
    $rows_locais = $result_cat_locais->fetchAll(PDO::FETCH_ASSOC);

    foreach ($rows_locais as $row_cat_locais) {

    $result_local = $conexao->prepare("SELECT * FROM estabelecimentos WHERE id = :row_cat_locais AND activo = :activo ORDER BY RAND()");
    $result_local->bindParam(':row_cat_locais', $row_cat_locais['estabelecimento_id'], PDO::PARAM_INT);
    $result_local->bindValue(':activo', 1, PDO::PARAM_INT);
    $result_local->execute();
    $row_local = $result_local->fetch(PDO::FETCH_ASSOC);

    $result_anexo_local = $conexao->prepare("SELECT * FROM estabelecimentos_anexos WHERE id_mae = :row_local AND seccao = :seccao ");
    $result_anexo_local->bindParam(':row_local', $row_local['id'], PDO::PARAM_INT);
    $result_anexo_local->bindValue(':seccao', 'thumbnail', PDO::PARAM_STR);
    $result_anexo_local->execute();
    $row_anexo_local = $result_anexo_local->fetch(PDO::FETCH_ASSOC);

    $result_count_posts = $conexao->prepare("SELECT COUNT(*) AS id_post FROM posts WHERE estabelecimento_id = :estabelecimento_id");
    $result_count_posts->bindParam(':estabelecimento_id', $row_local['id'], PDO::PARAM_INT);
    $result_count_posts->execute();
    $bar_posts = $result_count_posts->fetch(PDO::FETCH_ASSOC);

    $result_count_fotos = $conexao->prepare("SELECT COUNT(*) AS id FROM estabelecimentos_anexos WHERE id_mae = :row_local AND seccao = :seccao ");
    $result_count_fotos->bindParam(':row_local', $row_local['id'], PDO::PARAM_INT);
    $result_count_fotos->bindValue(':seccao', 'fotos', PDO::PARAM_STR);
    $result_count_fotos->execute();
    $bar_fotos = $result_count_fotos->fetch(PDO::FETCH_ASSOC);

    $query = $conexao->prepare("SELECT ROUND((SUM(pontos) / COUNT(*)), 1) FROM avaliacoes WHERE estabelecimento_id = :estabelecimento_id");
    $query->bindValue(':estabelecimento_id', $row_cat_locais['estabelecimento_id'], PDO::PARAM_INT);
    $query->execute();
    $row_avaliacao = (double) $query->fetchColumn();
    $row_avaliacao = $row_avaliacao > 0 ? number_format($row_avaliacao, 1, '.', '') : $row_avaliacao;

    $cor_rating = round($row_avaliacao);

    $return[] = '

        <div class="row">
            <div class="col">
                <a href="#/app/ver_estabelecimento/'.$row_local['slug'].'">
                    <div style="background: url(https://www.sabeonde.pt/gtm/anexos/estabelecimentos/'.$row_anexo_local['id_anexo'].'.'.$row_anexo_local['tipo'].'); border-top-left-radius:10px; border-top-right-radius:10px; height: 200px; background-size: 100% 100%; background-repeat: no-repeat;">
                    </div>
                    <div style="border-bottom-left-radius:10px; border-bottom-right-radius:10px; height: 100px; background-color: white;">
                        <table width="100%" border="0" cellpadding="0" cellspacing="0">
                            <tr>
                                <td colspan="2" valign="top">
                                    <a href="#/app/ver_estabelecimento/'.$row_local['slug'].'"><div style="font-size: 15px; color:black; margin:5px 0px 0px 10px;  font-weight: bold; ">'.$row_local['titulo'].'</div></a>
                                </td>
                            </tr>
                            <tr>
                                <td valign="top" width="25%">
                                   <div id="avaliacao_estabelecimentos_'.$cor_rating.'">'.$row_avaliacao.'</div>
                                </td>
                                <td valign="top" align="right">
                                    <div style="margin-top:10px; position:absolute; right:0; margin-right:18px;">
                                        <a href="#"><div class="botao_perfil_locais"><i class="fa fa-pencil"></i> Opiniões '.$bar_posts['id_post'].'</div></a>
                                        <a href="#"><div class="botao_perfil_locais"><i class="fa fa-camera"></i> Fotos '.$bar_fotos['id'].'</div></a>
                                    </div>
                                </td>
                            </tr>
                        </table>
                    </div>
                </a>
            </div>
        </div>
    ';
    }
    echo json_encode($return);
?>
  • Add in your question the code you use to rescue the data.

  • I already added the code

  • "County" is actually with "s". Put the HTML returned by the Ajax call: apparently, this comma is coming in the HTML returned by the API.

  • But I had to see in the api and there’s no comma

  • @Césarsousa put the return please, because depending on how the return you will have to make some kind of escape before returning the json.

  • yes I already put the return

Show 1 more comment

1 answer

0


Your return is being an array of Htmls, so the comma, try to make a return with a single HTML, that is, your return should be a string. I don’t know how to concatenate string in php but your return should ricate something like this that I will pass below:

$return += '

    <div class="row">
        <div class="col">
            <a href="#/app/ver_estabelecimento/'.$row_local['slug'].'">
                <div style="background: url(https://www.sabeonde.pt/gtm/anexos/estabelecimentos/'.$row_anexo_local['id_anexo'].'.'.$row_anexo_local['tipo'].'); border-top-left-radius:10px; border-top-right-radius:10px; height: 200px; background-size: 100% 100%; background-repeat: no-repeat;">
                </div>
                <div style="border-bottom-left-radius:10px; border-bottom-right-radius:10px; height: 100px; background-color: white;">
                    <table width="100%" border="0" cellpadding="0" cellspacing="0">
                        <tr>
                            <td colspan="2" valign="top">
                                <a href="#/app/ver_estabelecimento/'.$row_local['slug'].'"><div style="font-size: 15px; color:black; margin:5px 0px 0px 10px;  font-weight: bold; ">'.$row_local['titulo'].'</div></a>
                            </td>
                        </tr>
                        <tr>
                            <td valign="top" width="25%">
                               <div id="avaliacao_estabelecimentos_'.$cor_rating.'">'.$row_avaliacao.'</div>
                            </td>
                            <td valign="top" align="right">
                                <div style="margin-top:10px; position:absolute; right:0; margin-right:18px;">
                                    <a href="#"><div class="botao_perfil_locais"><i class="fa fa-pencil"></i> Opiniões '.$bar_posts['id_post'].'</div></a>
                                    <a href="#"><div class="botao_perfil_locais"><i class="fa fa-camera"></i> Fotos '.$bar_fotos['id'].'</div></a>
                                </div>
                            </td>
                        </tr>
                    </table>
                </div>
            </a>
        </div>
    </div>
';
  • And that even worked right. Thank you

Browser other questions tagged

You are not signed in. Login or sign up in order to post.