我对我的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>
答案 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:)