1

我有一个主要的 PHP 页面,它使用 jQuery 加载用户可以执行的操作的不同页面。

主页

这是用户做所有事情的地方。它有一个 jQuery 脚本,当您单击橙色元素时<p>

当您单击“Solicitar Software”时,jQuery 会加载“solicitudes.php”。这个 php 页面有它自己的脚本。

在此处输入图像描述

当“solicitudes.php”页面加载时,它的 PHP 脚本运行。

require('conexion.php');
$conexion = new connection();

$query = "SELECT * FROM Carreras";
$resultado = mysql_query($query, $conexion -> conn) or die('ERROR:' .$query);

?>

该脚本加载数据库中的所有职业并将它们添加到<select>您可以看到的:

在此处输入图像描述

问题就在这里,当我点击一个carrer时,它不会加载与职业相关的列表主题。但是,如果我单独访问 PHP 文件,它运行良好。

在此处输入图像描述

这是jQuery代码:

$(document).ready(function() {
    $("#carrera").change( //Select a carrer
        function()
        {
                var carreraId = $('#carrera option:selected').val();
                var queryMaterias = "carreraid=" + carreraId + "&valor=" + $("#valor").val();

                jQuery.ajax({
                  url: 'acciones.php',
                  type: 'GET',
                  dataType: 'text',
                  data: queryMaterias,
                  success: function(data) 
                  {
                    $("#lmateria").empty();
                    $("#lmateria").append(data); //Add subjects to the <select>
                    // $("#lmateria").html(data);
                  },
                  error: function(xhr, textStatus, errorThrown) {
                    //called when there is an error
                    alert(errorThrown);
                  }, 
                });

        }
);
});

难道我做错了什么?可能是什么问题?谢谢您的帮助。

主页:

<html>
        <head>
        <meta charset="utf-8">
        <title>Sistema de Administración</title>
        <link rel="stylesheet" type="text/css" href="//necolas.github.com/normalize.css/2.1.0/normalize.css">
        <link rel="stylesheet" type="text/css" href="css/administrador.css">
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
        <script type="text/javascript" src="scripts/administrador.js"></script> 

    </head>
    <body>

    <div id="acciones">
        <p id="logo">
            <img src="images/logo1.jpg" alt="logo">
        </p>
        <p id="division">Agregar Division</p>
        <p id="carrera">Agregar Carrera</p>
        <p id="materia">Agregar Materia</p>
        <p id="software">Agregar Software</p>
        <p id="profesor">Agregar Profesor</p>
        <p id="ssoftware">Solicitar Software</p>
        <p id="solicitudes">Lista de Solicitudes</p>
        <center><input type="button" id="logout" value="Salir" onclick="window.location.href='acciones.php?valor=5'"></center>
    </div>
    <div id="resultado">

    </div>

</body>
</html>

jQuery 在<div> resultado.

Solicitud.php:

<!doctype html>

<?php  

require('conexion.php');
$conexion = new connection();

$query = "SELECT * FROM Carreras";
$resultado = mysql_query($query, $conexion -> conn) or die('ERROR:' .$query);

?>

<html>
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" type="text/css" href="css/solicitud.css">
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
    <script type="text/javascript" src="scripts/solicitud.js"></script> 

</head>

<body>
    <header>
        <h2>Solicitud de Software</h2>
    </header>
    <form action="acciones.php" id="solicitud" method = "GET">
        <select name="carrera" id="carrera">
            <option value="">Seleccione una carrera</option>
            <?php 
                while ($datos = mysql_fetch_assoc($resultado)) #MUESTRA LOS ROLES
                            { 
            ?>
                <option value="<?php echo $datos['id'];?>"><?php echo utf8_encode($datos['Carrera']);?></option>
            <?php 
                            }
            ?>
        </select>

        <select name="materias" id="lmateria">
            <option value="">Potato</option>
        </select>

        <!-- <input type="text" placeholder="Nombre" id="nombre" name="nombre">
        <input type="text" placeholder="Codigo" id="codigo" name="codigo">
        <input type="button" value="Agregar" id="enviar"> -->
        <input type="hidden" id="valor" name="valor" value='17'>
    </form>
    <h3 id="exito">Agregado!</h3>
</body>
</html>
4

3 回答 3

1

在没有看到 HTML 的情况下,我不确定这是否 100% 正确,但应该为您指明正确的方向:

$(document).ready(function() {
    $("#carrera").change(function() {
        jQuery.ajax({
            url: 'acciones.php',
            type: 'GET',
            dataType: 'text',
            data: {
                carreraid: $('#carrera').val(),//possibly?
                valor: $("#valor").val()
            },
            success: function(data) {
                //In my experince, this is the safe way to replace (or append) options.
                $("#lmateria").find("option").each(function(i, opt) {
                    $(this).remove();
                });
                //Wrap in <select>...</select> only if not already included in data.
                $("<select>" + data + "</select>").find("option").each(function(i, opt) {
                    $("#lmateria").append(opt);
                });
            },
            error: function(xhr, textStatus, errorThrown) {
                //called when there is an error
                alert(errorThrown);
            }, 
        });
    });
});
于 2013-04-03T06:10:11.690 回答
1

这可能很愚蠢……这一直是我的错误。

我有 2 个名为“carrera”的元素,所以 jQuery 不知道该怎么做。只是改变它,它的工作。

在 Main 上,我有一个名为“carrera”的元素,而在“Solicitud.php”上,我有另一个元素,这就是为什么它在一个页面上工作而不在另一页面上工作的原因。

谢谢大家!。

于 2013-04-03T06:48:13.853 回答
0

尝试在 ajax 调用中使用绝对 url。url: '/path/to/acciones.php'

于 2013-04-03T06:10:36.033 回答