Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过AJAX将JSON对象发送到PHP会引发XML读取错误_Javascript_Php_Jquery_Json_Ajax - Fatal编程技术网

Javascript 通过AJAX将JSON对象发送到PHP会引发XML读取错误

Javascript 通过AJAX将JSON对象发送到PHP会引发XML读取错误,javascript,php,jquery,json,ajax,Javascript,Php,Jquery,Json,Ajax,我已经看到了很多关于这个话题的问题,但是我没有找到任何答案 我正在制作一个带有表单的网站,其中一个将注册一名学生,并通过AJAX将其作为JSON对象发送到php脚本,但无论出于何种原因,它都不会进入AJAX部分 这是我的html代码 <!DOCTYPE html> <html lang='es'> <!-- Cabecera --> <head> <meta charset="utf-8"> <title>P

我已经看到了很多关于这个话题的问题,但是我没有找到任何答案

我正在制作一个带有表单的网站,其中一个将注册一名学生,并通过AJAX将其作为JSON对象发送到php脚本,但无论出于何种原因,它都不会进入AJAX部分

这是我的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>

校友登记处
切换导航
校友登记处 赞成,请参阅校友登记处的公式

名义: 阿佩利多·帕特诺: 阿佩利多·马特诺: 卡雷拉: 计算机系统 奎米卡 麦卡托尼卡 电子 电学 工业的 罗斯蒂卡 指手画脚 抽搐 工程师协会 环境工程师协会 环境科学博士 慷慨: 焊接热影响区(Haz)的咔嗒声 注册校友»

window.jQuery | | document.write(“”)
这是我的javascipt registorscript.js

$(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");
    }
});
});
$(文档).ready(函数(){
$(“#boton”)。单击(函数(){
//瓦利达科涅斯
var specialChars=“@!\$%^&*()\+[]{}:;\”\“\,./~`-=1234567890-”?”
变量检查=函数(字符串){
如果(string.length>0){
对于(i=0;i-1){
返回true;
}
}
返回false;
}否则{
警惕(“赞成,雷琳·托多斯·洛斯·坎波斯”);
返回true;
}
}
如果(!check($('nombre').val())和&!check($('ap#pat').val())和&!check($('ap#mat').val()){
//阿贾克斯
var formData=JSON.stringify($(“#alumno”).serializeArray();
函数myFunction(){
document.getElementById(“loader”).style.display=“inline”;
}
$.ajax({
url:“alumnos.php”,
数据:$(“#校友”).serialize(),
类型:“POST”,
数据类型:“json”,
})
.done(函数(json){
警报(“El alumno ha sido agregado”);
})
//法洛之家酒店
.失败(功能(xhr、状态、错误抛出){
警惕(“眼睛出问题了”);
})
.始终(功能(xhr、状态){
document.getElementById(“加载器”).style.display=“无”;
});
}否则{
警觉(“不存在环境污染”);
}
});
});
最后,这是我用于测试的php脚本

<?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;
?>

当我尝试运行ajax部分时,在firefox的控制台中,“TypeError:$.ajax(…).done不是一个函数

删除XML时出错:无se ENCUNTRA el elemento 乌比卡翁:file:///D:/Proyectos/ITT/Examen%20Front-End/alumnos.php Número de línea 15,columna 3“

编辑: JQuery实际上是一个旧版本,不支持。在ajax中完成,并更正了双JQuery源代码


主要问题似乎在于php代码中

我发现您缺少一个分号:

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

首先尝试修复语法错误。

我不确定。。。但是,请尝试删除
数据类型:“json”末尾的尾随coma。
。为什么要加载两个jquery库?使用一个,并将其移动到调用jquery对象的位置,而不首先加载库。看起来您包含了两次jquery,第二个仅包含v1.4.3。
$.ajax()
返回的jqXHR对象直到v1.5才开始支持
.done()
。实际上,分号就在那里,firefox的控制台没有标记任何其他语法错误