回声不打印任何东西(之前是)

时间:2014-04-15 02:54:49

标签: php jquery

我对我的PHP代码回应有点头疼,问题是它不是在屏幕上打印任何东西,即使它之前,我已经添加了一个函数,但是当我使用firebug进行调试时它表明它正确地从数据库中获取信息,而不是在屏幕上打印它。

如果要显示一个清单,除了空白空间外,什么都没有,凝视着我的灵魂。

如果有人可以指出我,如果我遗失了某些东西,以及为什么会发生这种情况,我会很感激,所以我不再需要打扰任何人,如果需要,可以分享我新获得的知识。

PHP

function displayInfoLabs(){  

if(isset($_POST['pId'])){

    $id = $_POST['pId'];

        $info = getSpecificLabs($id);

while($row = mysql_fetch_assoc($info)){
echo '<ul>' .
        '<li>Laboratorio # ' . $row['codigolab'] . '</li>' .
        '<li>Capacidad: ' . $row['capacidad'] . '</li>' .
        '<li>Carrera: ' . $row['carrera'] . '</li>' .
        '<li>Ubicación: ' . $row['ubicacion'] . '</li>' .
     '</ul>';

   }
  }
 }


function getSpecificLabs($pId){  


 $query = "SELECT bk.idlab , bk.codigolab , bk.capacidad, bk.carrera, bk.ubicacion FROM labs as bk WHERE bk.idlab = $pId";

 $result = do_query($query);

 return $result;
}

作为参考,我还包括这个函数的html和JS代码。

JS

$("#lnkInfo").click(function() {
  var id = $('#txtId').val();


 var request = $.ajax({
  url: "includes/functionsLabs.php",
  type: "post",
  data: {

    'call': 'displayInfoLabs',
    'pId':id},

    dataType: 'json',

success: function(response){
        alert('exito')

    }
  });
});

通过PHP创建的HTML,请注意调用JS的lnkInfo,后者又调用PHP

function displayList(){

 $lista = getLabs();

while($row = mysql_fetch_assoc($lista)){
echo 
      '<div class="box" id="lab'.$row['idlab'].'">
          <p id="labName">Lab #'.$row['codigolab'] . '</p>
          <p class="info"><a href="#" id="lnkInfo">Info</p></a>
          <p class="info"><a href="reservarLab.html">Reservar</p></a>
          <input type="hidden" name="txtId" id="txtId" value="'.$row['idlab'].'">
      </div>';
 }
}

提前多多感谢。

修改

更改成功功能使列表显示但是它覆盖了div的样式,包括它具有的按钮和所有。这是div的代码。

div class="popUp1 hide" id="popUpCorrecto1">
        <div class="estiloPopUp">
          <span>Información de laboratorio</span>
          <span value="Cerrar" id="btnCerrar">x</span>
        </div>



          <input type = "button" value = "Eliminar" id = "btnEliminar" onclick="eliminar()" />
          <input type = "button" value = "Modificar" id = "btnModificar"  onclick="window.location='modificarLab.html';" />

        </div>  

1 个答案:

答案 0 :(得分:1)

正如您在评论中所说,您的数据正在被捕获,但您没有将其附加到文档中。你只是在做:

alert('exito');

您要做的是将回复附加到您网页中的元素。

例如,我们可以将 <div> 的ID设置为 mydata ,如下所示:

<div id="mydata"></div>

现在,在您的jQuery.ajax功能中,您可以执行以下操作:

$("#lnkInfo").click(function() {
  var id = $('#txtId').val();


 var request = $.ajax({
  url: "includes/functionsLabs.php",
  type: "post",
  data: {

    'call': 'displayInfoLabs',
    'pId':id},

    dataType: 'text/html',

success: function(response){
        $('#mydata').html(response);

    }
  });
});

正如您在上面所看到的,我们修改了您的success函数以包含

$('#mydata').html(response);

如果您正确打印和提供所有数据,它应显示在页面上。

编辑:

它出现在你的PHP查询中

$query = "SELECT bk.idlab , bk.codigolab , bk.capacidad, bk.carrera, bk.ubicacion FROM labs as bk WHERE bk.idlab = $pId";

您选择的是以 bk.* 为前缀但仍尝试打印不带前缀的值的列,如下所示:

     echo '<ul>' .
        '<li>Laboratorio # ' . $row['codigolab'] . '</li>' .
        '<li>Capacidad: ' . $row['capacidad'] . '</li>' .
        '<li>Carrera: ' . $row['carrera'] . '</li>' .
        '<li>Ubicación: ' . $row['ubicacion'] . '</li>' .
     '</ul>';

尝试将上述内容更改为:

     echo '<ul>' .
        '<li>Laboratorio # ' . $row['bk.codigolab'] . '</li>' .
        '<li>Capacidad: ' . $row['bk.capacidad'] . '</li>' .
        '<li>Carrera: ' . $row['bk.carrera'] . '</li>' .
        '<li>Ubicación: ' . $row['bk.ubicacion'] . '</li>' .
     '</ul>';

如果我理解正确的话。

编辑:忽略上面的php示例。

更改success功能:

$('#mydata').html(response);

$('#mydata').append(response);

由于.html()用提供的内容替换指定元素中的所有内容。

编辑#2:

从评论中,每次触发 #LnkInfo 时都会运行ajax请求,这似乎会在加载PopUp时发生很多事情?

你想要做的是在你的jQuery函数中添加一些逻辑,检查你是否已经将列表附加到弹出窗口并阻止它附加。

这可以通过在那里的某处添加一个布尔变量来完成。 或者,你可以在你附加的弹出窗口上添加一个小div。

示例:

这是你的弹出窗口:

div class="popUp1 hide" id="popUpCorrecto1">
        <div class="estiloPopUp">
          <span>Información de laboratorio</span>
          <span value="Cerrar" id="btnCerrar">x</span>
        </div>

        <!-- ADDED A NEW DIV HERE FOR LIST CONTENT -->
        <div id="mylistcontent"></div>

          <input type = "button" value = "Eliminar" id = "btnEliminar" onclick="eliminar()" />
          <input type = "button" value = "Modificar" id = "btnModificar"  onclick="window.location='modificarLab.html';" />

        </div>  

如上所示,我添加了以下内容:

<!-- ADDED A NEW DIV HERE FOR LIST CONTENT -->
            <div id="mylistcontent"></div>

现在在您的jQuery success函数中,您可以附加到 #mylistcontent div而不是弹出div:)