2015-10-16 52 views
0

我是新来的AJAX,我试图创建两个从数据库选项的下拉列表,取决于用户在两个以前的下拉列表中选择。我检查了各方面的形状和形式,我抬头一看,但一个下拉列表不返回任何值,另一个说内部服务器错误500查询不通过JavaScript与500内部服务器错误

这就是onChange事件,引发了AJAX功能:

<select required="true" id="oficinaLoc" name="oficinaLoc" onchange="getAgent(this.value); selClub(this.value)"> 
    <option value="">Seleccione Unidad</option> 
    <option value="680 - Centro de Tecnología de Información">680 - Centro de Tecnología de Información</option> 
    <option value="681 - Educación Agrícola">681 - Educación Agr&iacute;cola</option> 
    <option value="682 - Planificación y Evaluación">682 - Planificaci&oacute;n y Evaluaci&oacute;n</option> 
    <option value="683 - Medios Educativos e Información">683 - Medios Educativos e Informaci&oacute;n</option> 
    <option value="684 - Ciencias de la Familia y el Consumidor">684 - Ciencias de la Familia y el Consumidor</option> 

    etc... 

这是我的AJAX功能:

function getAgent(str) { 
    if (str == "") { 
     document.getElementById("dispAgente").innerHTML = ""; 
     return; 
    } else { 
     if (window.XMLHttpRequest) { 
      // code for IE7+, Firefox, Chrome, Opera, Safari 
      xmlhttp = new XMLHttpRequest(); 
     } else { 
      // code for IE6, IE5 
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
     xmlhttp.onreadystatechange = function() { 
      if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
       document.getElementById("dispAgente").innerHTML = xmlhttp.responseText; 
      } 
     } 
     xmlhttp.open("GET","getagent.php?q="+str,true); 
     xmlhttp.send(); 
    } 
} 

function selClub(unidad) { 
    if (unidad == "") { 
     document.getElementById("dispNombre").innerHTML = ""; 
     return; 
    } else { 
     if (window.XMLHttpRequest) { 
      // code for IE7+, Firefox, Chrome, Opera, Safari 
      xmlhttp = new XMLHttpRequest(); 
     } else { 
      // code for IE6, IE5 
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
     xmlhttp.onreadystatechange = function() { 
      if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
       document.getElementById("dispNombre").innerHTML = xmlhttp.responseText; 
      } 
     } 
     xmlhttp.open("GET","getnombre.php?j="+unidad,true); 
     xmlhttp.send(); 
    } 
} 

这些都是它分别通过XMLHttpRequest调用PHP页面:

getagent.php

<?php 
ini_set('display_errors',1); 
ini_set('display_startup_errors',1); 
error_reporting(-1); 

$q = ($_GET['q']); 

$con = mysqli_connect('intrasise.uprm.edu','jchristian','registro4h','4h'); 
if (!$con) { 
    die('Could not connect: ' . mysqli_error($con)); 
} 

mysqli_select_db($con,"4h"); 
$sql="SELECT nombre FROM personal4h WHERE unidadProg LIKE '%".$q."%'"; 
$result = mysqli_query($con,$sql); 

echo '<select name="agenteExt"'; 
while($row = mysqli_fetch_array($result)) { 
    echo "<option value = " . $row['nombre'] . ">" . $row['nombre'] . "</option>"; 
} 
echo "</select>"; 
mysqli_close($con); 
?> 

getnombre.php

<?php 
ini_set('display_errors',1); 
ini_set('display_startup_errors',1); 
error_reporting(-1); 

$j = ($_GET['j']); 

$con = mysqli_connect('intrasise.uprm.edu','jchristian','registro4h','4h'); 
if (!$con) { 
    die('Could not connect: ' . mysqli_error($con)); 
} 

mysqli_select_db($con,"4h"); 
$sql="SELECT nombreClub FROM club4h WHERE oficinaLoc LIKE '%".$j."%'"; 
$result = mysqli_query($con,$sql); 

echo '<select name="nombreClub"'; 
while($row = mysqli_fetch_array($result)) { 
    echo "<option value = " . $row['nombreClub'] . ">" . $row['nombreClub'] . "</option>"; 
} 
echo "</select>"; 
mysqli_close($con); 
?> 

getAgent功能不会在下拉列表返回任何选项,即使它创建空的选择。 selClub函数在xmlhttp.open("GET","getagent.php?q="+str,true);行上给我一个500内部服务器错误。我真的不知道还有什么可以做的,我已经把我发现的关于这个网站的每篇在线文章都关注了。

+0

请,请不要混用具有逻辑表示逻辑('''echo''')。也逃避你的变量,你的代码很容易[SQL注入](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)。为了检查你的代理错误,只需将你的浏览器指向'''http:// whatever/you/have/getagent.php'''。 – mTorres

+0

我使用php的错误报告,这是我得到的错误,注意:未定义变量:mysqli在第10行的/var/www/html/registro4h/login/clubes/club4h/getnombre.php致命错误:致电成员函数real_escape_string()在非对象/var/www/html/registro4h/login/clubes/club4h/getnombre.php在线10 我是逃避变量,但我删除了代码,为了找出是否错误会消失,即使我删除了该错误,它仍会一直显示real_escape_string错误。 – jChris

回答

0

500错误是一个服务器错误,所以这意味着问题将在PHP中,我看到很多问题。我不确定这是一个完整的列表,...你需要自己调试它,但是这里有一对没有帮助的东西。

$j = ($_GET['j']); 
$j = $_GET['j']; 
//dump the() 

echo '<select name="nombreClub"'; 
echo '<select name="nombreClub">'; 
//closing > is missing 

echo "<option value = " . $row['nombre'] . ">" . $row['nombre'] . "</option>"; 
echo "<option value=\"".$row['nombre']."\">".$row['nombre']."</option>"; 
//quotes around the value are missing 

如果您查看PHP文件抛出的错误,那么您将会在途中。

好运

+0

我得到了一个工作(函数selClub与getnombre.php),但即使复制到另一个函数和PHP它仍然不会给我的查询值。有时候,有效的功能会被复制到两个字段中。我仍然需要帮助理解为什么。当我用不同的变量完成每个变量时,因为它是一个不同的查询。 – jChris