elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


  Mostrar Temas
Páginas: [1]
1  Programación / PHP / [Resuelto] [Newbie] No puedo acceder a objeto JSON enviado por AJAX en: 14 Enero 2015, 05:43 am
Buenas noches. Tengo un pequeño problema con AJAX y PHP.

Lo que intento realizar un buscador en tiempo real, como el de AngularJS. Lo que deseo que haga es lo siguiente:

  • Enviar un objeto JSON por medio de AJAX hacia un script PHP.
  • El retorno de datos quiero que sea opcional (actualmente, si no retorno un json desde mi script PHP con json_encode($array_asociativo), me lanza un parserrror.
  • Una vez obtenido el dato del objeto JSON realizar una consulta a la BD para buscar matches (full text).
  • En el método done() del método AJAX de jQuery, recargar la tabla por medio del método load("path/to/file.php").

    Nota: Si le pongo dataType: "json" y no devuelvo nada en el script PHP me genera un parserror y el AJAX falla.

    Bien, mi estructura de fichers es la siguiente:

    ROOT -> app y public
    app -> views -> templates -> users-table.php
    public -> js, css, img e index.php

    index.php

    Código
    1. <?php
    2. require_once($_SERVER["DOCUMENT_ROOT"]."/UsuariosCRUD/app/utils/path-dirs.php");
    3. if(!isset($_SESSION["is-search"])) {
    4. $_SESSION["is-search"] = FALSE;
    5. }
    6. ?>
    7. <!DOCTYPE html>
    8. <html lang="en">
    9. <head>
    10. <meta charset="UTF-8">
    11. <title>CRUD Usuarios PHP - AJAX</title>
    12. <link rel="stylesheet" href="public/css/usuarios.css"/>
    13. <link rel="icon" href="public/img/favicon2.ico"/>
    14. </head>
    15. <body>
    16. <header class="header">
    17. <nav class="navbar">
    18. <h1 class="header-title">CRUD de usuarios con PHP y AJAX</h1>
    19. </nav>
    20. </header>
    21.  
    22. <main class="main">
    23. <!-- Textfield para filtrar usuarios -->
    24. <input type="text" id="text-search" class="textfield search" placeholder="Busque un usuario aquí"/>
    25. <!-- Boton para agregar usuario nuevo -->
    26. <button type="button" id="new-user" class="btn btn-primary action-option"
    27. data-action="create-user">Nuevo</button>
    28.  
    29. <!-- tabla de usuarios -->
    30. <section id="datatable">
    31. <?php
    32. require_once($app_dir."views/templates/users-table.php");
    33. ?>
    34. </section>
    35.  
    36. <button type="button" id="destroy-session" class="btn btn-danger"
    37. style="margin-left: 133px">Resetear</button>
    38.  
    39. <!-- ventanas modales -->
    40. <?php
    41. require_once($app_dir."views/templates/modal-windows.php");
    42. ?>
    43. </main>
    44.  
    45. <script src="public/js/destroy-php-session.js"></script>
    46. </body>
    47. </html>
    48.  

    ajax.js

    Código
    1. $("#text-search").on("keyup", function() {
    2. var word = $(this).val();
    3. console.log(word);
    4. //var dataToSend = JSON.parse('{"text": "'+word+'"}');
    5. /*var data = {"text": word};
    6. dataToSend = JSON.parse(JSON.stringify(data));*/
    7.  
    8. $.ajax(
    9. {
    10. url: "app/utils/user/search-users.php",
    11. //dataType: "json",
    12. data: {text: "García"},
    13. type: "GET",
    14. }
    15. )
    16. .done(function() {
    17. $("#datatable").load("app/views/templates/users-table.php");
    18. $("#text-search").focus();
    19. console.log("Success");
    20. })
    21. .fail(function(jqXHR, textStatus, errorThrown) {
    22. console.log(textStatus);
    23. console.log("Fail");
    24. })
    25. .always(function(jqXHR, textStatus, errorThrown) {
    26.  
    27. });
    28. });
    29.  
    30. });

    search-users.php

    Código
    1. <?php
    2. if(!isset($_SESSION)) {
    3.    session_start();
    4.    $_SESSION["is-search"] = TRUE;
    5. }
    6. require_once($_SERVER["DOCUMENT_ROOT"]."/UsuariosCRUD/app/utils/path-dirs.php");
    7. require_once($app_dir."services/user/UserService.class.php");
    8.  
    9.  
    10. // obtiene los usuarios de la bd
    11. $users = null;
    12. if($_SESSION["is-search"] === TRUE) {
    13.    $text = $_GET["text"];
    14.    //$text = "garcia";
    15.    $query = "SELECT * FROM user WHERE MATCH(userId,names,surnames,dni,address,phone,email)
    16.        AGAINST('garcía')";
    17.    $users = UserService::getInstance()->query($query);
    18. }

    users-table.php

    Código
    1. <?php
    2. require_once($_SERVER['DOCUMENT_ROOT'].'/UsuariosCRUD/app/utils/path-dirs.php');
    3. if(!isset($_SESSION)) {
    4.    session_start();
    5. }
    6. if($_SESSION["is-search"] === TRUE)
    7.    require_once($app_dir."utils/user/search-users.php");
    8. else
    9.    require_once($app_dir.'utils/user/obtener-usuarios.php');
    10. ?>
    11. <table id="table" class="table" style="width: auto; margin: 10px auto">
    12.    <thead>
    13.        <tr>
    14.            <th>ID</th>
    15.            <th>Nombres</th>
    16.            <th>Apellidos</th>
    17.            <th>DNI</th>
    18.            <th>Dirección</th>
    19.            <th>Teléfono</th>
    20.            <th>Email</th>
    21.            <th>Acción</th>
    22.        </tr>
    23.    </thead>
    24.    <tbody>
    25.        <?php
    26.        $actionLinks =
    27.        '<a class="action-option" data-action="user-info">'.
    28.        '<span class="nowrap"><span class="icon icon-info icon-margin icon-info-margin"></span></span>'.
    29.        'Ver'.
    30.        '</a>'.
    31.        '<a class="action-option" data-action="edit-user">'.
    32.        '<span class="nowrap"><span class="icon icon-edit icon-margin"></span></span>'.
    33.        'Editar'.
    34.        '</a>'.
    35.        '<a class="action-option" data-action="drop-user">'.
    36.        '<span class="nowrap"><span class="icon icon-drop icon-margin icon-drop-margin"></span></span>'.
    37.        'Remover'.
    38.        '</a>';
    39.        $rowIndex = 1;
    40.        while($row = $users->fetch_assoc()) {
    41.            echo "<tr data-row-index=".$rowIndex.">";
    42.            echo "<td>".$row["userId"]."</td>";
    43.            echo "<td>".$row["names"]."</td>";
    44.            echo "<td>".$row["surnames"]."</td>";
    45.            echo "<td>".$row["dni"]."</td>";
    46.            echo "<td>".$row["address"]."</td>";
    47.            echo "<td>".$row["phone"]."</td>";
    48.            echo "<td>".$row["email"]."</td>";
    49.            echo "<td>".$actionLinks."</td>";
    50.            echo "</tr>";
    51.            $rowIndex++;
    52.        }
    53.        ?>
    54.    </tbody>
    55. </table>


    Screenshot:





    Gracias.
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines