2017-05-23 9 views
0

このトピックについて多くの質問がありましたが、私の質問には答えが見つかりません。JSONオブジェクトをAJAX経由でPHPに送信するとXML読み込みエラーが発生する

私は、学生を登録し、それをAJAX経由でPHPスクリプトにJSONオブジェクトとして送信するフォームを持つウェブサイトを作っていますが、理由は何ですか?ajaxの部分には入りません。

これは、これは私のjavasciptが

$(document).ready(function(){ 
$("#boton").click(function(){ 
    //validaciones 
    var specialChars = "<>@!#$%^&*()_+[]{}?:;|'\"\\,./~`-=1234567890¬°~`¨¡¿´¨" 
    var check = function(string){ 
     if(string.length > 0){ 
      for(i = 0; i < specialChars.length;i++){ 
       if(string.indexOf(specialChars[i]) > -1){ 
        return true; 
       } 
      } 
      return false; 
     } else { 
      alert("Por favor, rellene todos los campos"); 
      return true; 
     } 
    } 

    if(!check($('#nombre').val()) && !check($('#ap_pat').val()) && !check($('#ap_mat').val())){ 
     //ajax 
     var formData = JSON.stringify($("#alumno").serializeArray()); 
     function myFunction() { 
      document.getElementById("loader").style.display = "inline"; 
     } 
     $.ajax({ 
      url: "alumnos.php", 
      data: $("#alumno").serialize(), 
      type:"POST", 
      dataType:"json",  
     }) 
     .done(function (json) { 
      alert("El alumno ha sido agregado"); 
     }) 
     //en caso de fallo 
     .fail(function(xhr, status, errorThrown){ 
      alert("Ha ocurrido un problema al momento de enviar el pedido"); 
     }) 
     .always(function(xhr, status){ 
      document.getElementById("loader").style.display = "none"; 
     }); 
    } else { 
     alert("no se pudo enviar el pedido"); 
    } 
}); 
}); 

をregistroscript.js、最終的にこれは私が

<?php 
$usuario = $_POST['nombre']; 
$ap_pat = $_POST['ap_pat']; 
$ap_mat = $_POST['ap_mat']; 
$carrera = $_POST['carrera']; 
$genero = $_POST['genero']; 

$file = fopen('alumno.json','w+'); 

echo "1: ".$usuario; 
echo "2: ".$ap_pat; 
echo "3: ".$ap_mat; 
echo "4: ".$carrera; 
echo "5: ".$genero; 
?> 

テストするために使用したPHPスクリプトである私のhtmlコード

<!DOCTYPE html> 
<html lang='es'> 
<!-- Cabecera --> 
<head> 
    <meta charset="utf-8"> 
    <title>Página de registro de alumnos</title> 
    <!-- CSS, tanto del bootstrap principal como el custom en general --> 
    <link href="./bootstrap/css/bootstrap.min.css" rel="stylesheet"> 
    <link href="./bootstrap/css/bootstrap-theme.min.css" rel="stylesheet"> 
    <link rel="stylesheet" type="text/css" href="prueba.css"> 

</head> 
<!-- cuerpo en general --> 
<body> 

<nav class="navbar navbar-inverse navbar-fixed-top"> 
    <div class="container"> 
    <div class="navbar-header"> 
     <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"> 
     <span class="sr-only">Toggle navigation</span> 
     <span class="icon-bar"></span> 
     <span class="icon-bar"></span> 
     <span class="icon-bar"></span> 
     </button> 
     <a class="navbar-brand" href="#">Front-End Test</a> 
    </div> 
    <div id="navbar" class="collapse navbar-collapse"> 
     <ul class="nav navbar-nav"> 
     <li class="active"><a href="#">Registo</a></li> 
     <li><a href="consulta.html">Consulta</a></li> 
     </ul> 
    </div> 
    </div> 
</nav> 

<div class="container theme-showcase" role="main"> 
    <!-- descripción general --> 
    <div class="jumbotron"> 
     <h1>REGISTRO DE ALUMNOS</h1> 
     <p>Por favor, rellene el siguiente formulario para el registro de alumnos</p> 
    </div> 
</div> 
<!-- la parte del formato del formulario --> 

<div class="container"> 
    <div class="col-md-4"> 
     <form enctype='application/json' name="alumno" id="alumno"> 
      <h2>Nombre:</h2> 
      <input type="text" id="nombre" name="nombre"> </input> 
      <h2>Apellido Paterno:</h2> 
      <input type="text" id="ap_pat" name="ap_pat"> </input> 
      <h2>Apellido Materno:</h2> 
      <input type="text" id="ap_mat" name="ap_mat"> </input> 
      <h2>Carrera:</h2> 
      <select id="carrera" name="carrera"> 
       <option selected value="1">SISTEMAS COMPUTACIONALES</option> 
       <option value="2">QUIMICA</option> 
       <option value="3">MECATRONICA</option> 
       <option value="4">ELECTRONICA</option> 
       <option value="5">ELECTROMECANICA</option> 
       <option value="6">INDUSTRIAL</option> 
       <option value="7">LOGISTICA</option> 
       <option value="8">GESTION EMPRESARIAL</option> 
       <option value="9">TICS</option> 
       <option value="10">MAESTRIA EN CIENCIAS DE LA INGENIERIA</option> 
       <option value="11">MAESTRIA EN CIENCIAS DE LA INGENIERIA AMBIENTAL</option> 
       <option value="12">DOCTORADO EN CIENCIAS AMBIENTALES</option> 
      </select> 
      <h2>Genero:</h2> 
      <input type="checkbox" id="genero" name="genero"> <label for="genero">Haz click en el recuadro si es hombre</label> </input> 
     </form> 
    </div> 
</div> 

<div id="loader"> 
</div> 

<div class="container"> 
    <p><a class="btn btn-primary btn-lg" role="button" id="boton">Registrar alumno &raquo;</a></p> 
</div> 

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
<script>window.jQuery || document.write('<script src="jquery-3.2.1.min.js"><\/script>')</script> 
<script src="./bootstrap/js/bootstrap.min.js"></script> 
<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.3.min.js" ></script> 
<script type="text/javascript" src="./registroscript.js"> </script> 
</body> 
</html> 

です私は、Firefoxのコンソールで "ajaxの部分を実行しようとします" TypeError:$ .ajax(...)。doneは関数ではありません

エラーデlecturaのXML:なしSE encuentra EL Ubicaciónelemento:ファイル:/// D:/Proyectos/ITT/Examen%20Front-End/alumnos.php NUMEROデリネア15、columna 3"

EDITは: jQueryのは、実際のAjaxでの.doneをサポートしていませんでした以前のバージョンにあったとダブルjQueryのソース

を修正そして、私があなたのことを見

+0

私は確信していません...しかし、 'dataType:" json "、'の末尾に残っている昏睡を取り除こうとします。 –

+0

なぜ2つのjqueryライブラリをロードしていますか? 1つを使用し、ライブラリを最初にロードせずに呼び出し元のjqueryオブジェクトにを移動します。 – Canolyb1

+1

jQueryを2回追加したようですが、2番目のものはv1.4.3のみです。 '$ .ajax()'によって返されたjqXHRオブジェクトはv1.5まで '.done()'をサポートしませんでした。 –

答えて

0

主な問題は、PHPのコードにあるようですセミコロンがありません:

var specialChars = "<>@!#$%^&*()_+[]{}?:;|'\"\\,./~`-=1234567890¬°~`¨¡¿´¨"; 

まず、構文エラーを修正してください。

+0

現実にはセミコロンが実際に存在し、firefoxのコンソールは他の構文エラーをマークしません – Emenor

関連する問題