Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/09/2017, 10:19
Tik3r
 
Fecha de Ingreso: octubre-2008
Mensajes: 32
Antigüedad: 16 años, 1 mes
Puntos: 0
Enviar datos con AJAX y recibirlos con JSON

Buenas!!

Tengo un problema y es que quiero enviar unos datos de un formulario para recibir unos datos en JSON del servidor.

Pongo el código haber si veis que puede estar fallando ya que no me realiza ninguna acción....

HTML:

Código HTML:
Ver original
  1. <!DOCTYPE html>
  2. <html lang="es">
  3.     <head>
  4.         <meta charset="utf-8">
  5.         <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  6.         <meta http-equiv="X-UA-Compatible" content="IE=edge">
  7.         <meta name="author" content="Antonio Romero">
  8.         <meta name="robots" content="noindex, nofollow">
  9.         <meta name="description" content="Aplicación para calcular el IBAN">
  10.         <title>Calcular IBAN</title>
  11.         <!-- Latest compiled and minified Bootstrap CSS -->
  12.         <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous">
  13.         <link rel="stylesheet" href="css/style.css" type="text/css" media="screen">
  14.         <!-- jQuery library
  15.        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> -->
  16.     </head>
  17.     <body>
  18.         <noscript>
  19.             <div class="container">
  20.                 <div class="alert alert-warning alert-dismissible fade show" role="alert">
  21.                     <button type="button" class="close" data-dismiss="alert" aria-label="Close">
  22.                     <span aria-hidden="true">&times;</span></button>
  23.                     <p>Para la funcionalidad completa de este sitio es necesario habilitar JavaScript. Estas son las <a href="http://www.enable-javascript.com/" target="_blank">instrucciones</a> para habilitar JavaScript en su navegador web</p>
  24.                 </div>
  25.             </div>
  26.         </noscript>
  27.         <div class="container">
  28.         <header class="row justify-content-center">
  29.             <h1>Calcular IBAN</h1>
  30.         </header>
  31.         </div>
  32.         <div id="data" class="container">
  33.             <div id="calcform" class="border border-primary rounded">
  34.             <form id="calculator" action="#" method="post" accept-charset="utf-8">
  35.                 <div class="form-group">
  36.                     <label class="form-control-label" for="bank">
  37.                         <span class="badge badge-info">Entidad</span>
  38.                     </label>
  39.                     <input id="bank" name="bank" type="text" class="form-control" placeholder="Código del banco" maxlength="20">
  40.                 </div>
  41.                 <div class="form-group">
  42.                     <label class="form-control-label" for="office">
  43.                         <span class="badge badge-info">Oficina</span>
  44.                     </label>
  45.                     <input id="office" name="office" type="text" class="form-control" placeholder="Código de la oficina" maxlength="4">
  46.                 </div>
  47.                 <div class="form-group">
  48.                     <label class="form-control-label" for="DC">
  49.                         <span class="badge badge-info">DC</span>
  50.                     </label>
  51.                     <input id="DC" name="DC" type="text" class="form-control" placeholder="Dígito de control" maxlength="2">
  52.                 </div>
  53.                 <div class="form-group">
  54.                     <label class="form-control-label" for="BAC">
  55.                         <span class="badge badge-info">Número de cuenta</span>
  56.                     </label>
  57.                     <input id="BAC" name="BAC" type="text" class="form-control" placeholder="Número de la cuenta bancaria" maxlength="10">
  58.                 </div>
  59.                 <div class="form-group">
  60.                     <div class="row justify-content-center">
  61.                     <button id="calc" type="button" class="btn btn-primary">Calcular</button>
  62.                     </div>
  63.                 </div>
  64.             </form>
  65.             </div>
  66.                 <div id="msg"></div>
  67.         </div>
  68.         <div class="container">
  69.             <footer class="row justify-content-center">
  70.             <p>Diseñado y codificado por <span>Antonio Romero</span></p>
  71.             </footer>
  72.         </div>
  73.         <!-- <div class="clearfix visible-sm-block"></div> -->
  74.         <!-- jQuery library -->
  75.         <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
  76.         <!-- Popper -->
  77.         <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js" integrity="sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4" crossorigin="anonymous"></script>
  78.         <!-- Latest compiled and minified Bootstrap JavaScript -->
  79.         <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js" integrity="sha384-h0AbiXch4ZDo7tp9hKZ4TsHbi047NrKGLO3SEJAg45jXxnGIfYzk4Si90RDIqNm1" crossorigin="anonymous"></script>
  80.         <script src="js/lib.js" type="text/javascript"></script>
  81.     </body>
  82. </html>

JS:

Código Javascript:
Ver original
  1. $(document).ready(function() {
  2.     $('#calc').click(function(e) {
  3.         e.preventDefault();
  4.         $.ajax({
  5.                 url: 'IBAN.php',
  6.                 type: 'POST',
  7.                 data: $('#calculator').serialize(),
  8.                 beforeSend: function (obj) {
  9.                     $('#data').html('<br><img alt="loading" src="img/loading.svg">');
  10.                 },
  11.                 complete: function (obj,check) {
  12.                     if (check!="success")
  13.                     {
  14.                         $('#msg').html('<br><div class="alert alert-danger" role="alert"><p>¡Ha ocurrido un error!</p></div>');
  15.                     }
  16.                 },
  17.                 success: function (resp) {
  18.                     $('#msg').html('');
  19.                    
  20.                     if ('IBAN' in resp) {
  21.                        
  22.                         var IBAN=resp.IBAN;
  23.                         var Bank=IBAN.substr(4,4);
  24.                         var Office=IBAN.substr(8,4);
  25.                         var DC=IBAN.substr(12,2);
  26.                         var BAC=IBAN.substr(14,10);
  27.                        
  28.                         $('#data').html('<table class="table table-hover table-responsive"><thead><tr class="bg-primary"><th>Descripción</th><th>Resultado</th></tr></thead><tbody><tr><th scope="row">Banco</th><td>'+resp.NameBank+'</td></tr><tr><th scope="row">Código Banco</th><td>'+Bank+'</td></tr><tr><th scope="row">Código Sucursal</th><td>'+Office+'</td></tr><tr><th scope="row">Dígito de control</th><td>'+DC+'</td></tr><tr><th scope="row">Número de cuenta</th><td>'+BAC+'</td></tr><tr><th scope="row">IBAN</th><td>'+IBAN+'</td></tr><tr><th scope="row">BIC</th><td>'+resp.BIC+'</td></tr><tr><th scope="row">Domiciliación de cuenta</th><td>'+Bank+' '+Office+' '+DC+' '+BAC+'</td></tr></tbody></table><div class="form-group"><div class="row justify-content-center"><button id="reset" type="button" class="btn btn-primary">Nuevo</button></div></div>');
  29.                     }
  30.                     else
  31.                         {
  32.                          $('#msg').html('<br><div class="alert alert-danger" role="alert"><p>'+resp+'</p></div>');  
  33.                         }
  34.                    
  35.                 }
  36.             });
  37.         });
  38. });

PHP:

Código PHP:
Ver original
  1. <?php
  2. if (isset($_POST['bank']))
  3.  {
  4.     require_once('lib/IBAN.class.php');
  5.    
  6.     $bank=$_POST['bank'];
  7.     $office=$_POST['office'];
  8.     $DC2=$_POST['DC'];
  9.     $BAC=$_POST['BAC'];
  10.     $obj=new IBAN($bank,$office,$DC2,$BAC);
  11.      
  12.      if ($BIC=$obj->getBIC())
  13.      {
  14.          if ($NameBank=$obj->getNameBank())
  15.          {
  16.              if ($IBAN=$obj->getIBAN())
  17.              {
  18.                  header('Content-type: application/json; charset=utf-8');
  19.                  echo json_encode(array("IBAN"=>$IBAN,"NameBank"=>$NameBank,"BIC"=>$BIC));
  20.              }
  21.              else
  22.              {
  23.                  echo $obj->getError();
  24.              }
  25.          }
  26.          else
  27.          {
  28.              echo $obj->getError();
  29.          }
  30.      }
  31.      else
  32.      {
  33.          echo $obj->getError();
  34.      }
  35. }
  36. else
  37. {
  38.     echo
  39.     '<!DOCTYPE html>
  40.     <html>
  41.     <head>
  42.     <meta content="text/html; charset=UTF-8" http-equiv="content-type">
  43.     <title>Calcular IBAN</title>
  44.     <style type="text/css">
  45.     #cuerpo { position: absolute; width: 50%; height: 30%; top: 35%; left: 25%; background: red; }
  46.     img { position:relative; width: 15%; height: 45%; display:block; margin:auto; top:10%; }
  47.     p { text-align: center; color:white; font-weight:bold; font-size:22pt; }
  48.     </style>
  49.     </head>
  50.     <body>
  51.     <div id="cuerpo">
  52.     <br><img alt="OOPS" src="img/oops.jpg">
  53.     <br><p>USA EL FORMULARIO</p>
  54.     </div>
  55.     </body>
  56.     </html>';
  57. }
  58.  ?>

Gracias por adelantado!! Haber si me podéis echar una mano :D

Un saludo.