簡體   English   中英

只有當包含他的div變為可見時才加載php頁面

[英]loading php page only when the div containing him becomes visible

我制作某種購物車,當我按下表格線時,它會打開一些關於該項目的細節,為此我使用了一個高度為0且最初隱藏的div,其中包含細節,問題是我認為瀏覽器將加載信息頁面,無論是否按下該行。 有什么辦法讓瀏覽器只在他的DIV可見時加載頁面?

    $int = 0;
            echo "<table class=\"result_table\" id=\"result_table\">";
    foreach($types as $data){
        echo "<tr onClick=\"present(".$int.");\" >";
        echo "<td align=\"right\">";
        echo $data['number'];
        echo "</td>";
        echo "<td align=\"right\">";
        echo $data['item_name'];
        echo "</td>";
        echo "<td align=\"right\">";
        echo $data['amount'];
        echo "</td>";
        echo "<td align=\"right\">";
        echo "17";
        echo "</td></tr>";
        echo "<tr class=\"info_row\"><td colspan=\"4\"><div      id=\"div_num_".$int."\" style=\"height:0px\">
            <object type=\"text/html\" data=\"page.php\"            style=\"width:100%; height:100%; margin:0%;\">
            </div></td></tr>";
        $int++;
    }
    echo "</form></table>";

行的CSS

.info_row{
    visibility:hidden;
}

JS:

function present(item_id){  
    var div = document.getElementById("div_num_"+item_id);

    if(div.style.visibility=="visible"){
        div.style.visibility = 'hidden';
        div.style.height= '0';
    } else {
        div.style.visibility = 'visible';
        div.style.height= "200px";      
    }
}

因為你可以看到所有信息加載頁面但是不可見。 如果它不包括jquery,那么解決這個問題的其他好方法也會受到批評,因為我並不是真的很強大。

提前致謝。

首先,如果加載的信息不多,那么預加載數據可能更為明智。 用戶需要一個響應式用戶界面,即使這意味着他們永遠看不到的數據的初始下載時間還有幾毫秒。

但是,如果您堅持單獨加載數據,則可以使用xmlhttprequest來加載數據的表示(例如在JSON中),並使用模板解決方案將結果輸出到info div中。

可能生成數據的JSON表示的頁面可能如下所示:

<?php
    $result = array();


    // ... Code that defines type ... //



    $int = 0;
    foreach($types as $data){

        $result[] = array(
            "int"       => $int,
            "number"    => $data["number"],
            "item_name" => $data["item_name"],
            "amount"    => $data["amount"]
        );

        $int++;
    }

    echo json_encode($result);
?>

因此,當用戶單擊鏈接時,上面的頁面將加載到xmlhttprequest 然后,您可以使用JSON.parse(req.responseText)解析結果,並將HTML模板應用於結果(請查看上面的鏈接, 加上此鏈接,了解有關如何執行此操作的詳細信息)。

再一次,您可能只需一次性加載所有數據。 額外的HTTP標頭實際上使頁面完全加載需要更長的時間。

你可以使用ajax調用:

用javascript

<script type="text/javascript">
function loadInfoRow()
{
var xmlhttp;
xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function()
{
   if (xmlhttp.readyState==4 && xmlhttp.status==200)
   {
     var responseText = xmlhttp.responseText;
     //Use the response text to add the extra row
   }
}
xmlhttp.open("GET","info.txt",true);
xmlhttp.send();
}
</script>

用jquery

$.ajax({
  url: "info.txt",
  context: document.body,
  success: function(text){
    //where text will be the text returned by the ajax call
    $(".result_table).append(text);
  }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM