[英]Echo not printing anything (It was before)
我對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,請注意lnkInfo,后者調用JS,而后者又調用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>
正如您在評論中所說,您的數據已被捕獲,但沒有將其附加到文檔中。 您只是在做:
alert('exito');
您要做的是將響應附加到頁面中存在的元素。
例如,我們可以將<div>
與mydata
的ID放置在一起,如下所示:
<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>';
嘗試將以上內容更改為:
$('#mydata').html(response);
如果我正確理解的話。
編輯:忽略上面的php示例。
將success
功能從以下位置更改:
$('#mydata').html(response);
至
$('#mydata').append(response);
由於.html()
用提供的內容替換指定元素中的所有內容。
編輯#2:
從注釋中可以看出, #LnkInfo
觸發#LnkInfo
時, #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上:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.