2014-11-02 359 views
-2

我想在表中顯示一行jQuery對話框(僅顯示部分信息)。這是我想要做的一個例子。在JavaScript中訪問多維PHP數組

問題:點擊某行的'查看更多詳細信息'圖像時,JS功能會收到所點擊行的ID。我不能像我在代碼的HTML部分中那樣分配給JS變量'data'。我該如何解決這個問題?是做這件事的好方法嗎?

<script> 
    $(function() {  
     $("#dialog").dialog({ 
      autoOpen: false, 
      height: 400, 
      width: 600, 
      buttons: [{ 
       text: "Close", 
       click: function() { 
        $(this).dialog("close"); 
       } 
      }] 
     }); 

     $(".details").click(function(){ 
      $("#dialog").empty(); 
      var i = $(this).attr('id'); 
      var data = <?=$cars[i]['price']?>; 
      $("#dialog").append("<p>Car:"+data+"</p>"); 
      $("#dialog").dialog("open"); 
     }); 
    }); 
</script> 

<table> 
    <?php for($i = 0; $i < count($cars); $i++) { ?> 
     <tr> 
      <td><?=$cars[$i]['model']?></td> 
      <td><?=$cars[$i]['colour']?></td> 
      <td> 
       <img class="details" id="<?=$i?>" style="cursor: pointer;" src="http://localhost/ci/public/images/details.png" width="40" height="40" alt="Details"/> 
      </td> 
     </tr> 
    <?php } ?> 
</table> 
+0

它應該做什麼? – 2014-11-02 18:17:51

+0

基於我猜測你正在嘗試做的事情,最簡單的做法是(我認爲)你正在嘗試做的是通過在PHP端添加數據屬性到你的'img'標籤。你的點擊處理程序可以用jquery的'data'方法調用它們來讀取它們 – 2014-11-02 18:22:34

+0

@TimSeguine我想做類似於這個http://aspsnippets.com/demos/671/的東西,但是我有一些數據沒有顯示在表中。 – David 2014-11-02 18:24:19

回答

0

您試圖使用客戶端上的服務器上的數據,而無需任何代碼將其發送到客戶端。你必須有一種方法來從PHP到JavaScript的數據。這是一個替代方案,它使用HTML數據屬性。

在你的形象標籤做到這一點:

<img class="details" id="<?=$i?>" data-price="<?=htmlentities($cars[$i]['price'])?>" style="cursor: pointer;" src="http://localhost/ci/public/images/details.png" width="40" height="40" alt="Details"/> 

這只是保存在一種形式的一些數據,客戶端可以輕鬆地閱讀。 htmlentities是否只是爲了安全起見,以防變量包含引號字符(有意或無意)

我應該指出,除非將其用於其他內容,否則在此處沒有明確需要id屬性。

然後你就可以改變你的點擊功能以下(從我的頭,沒有測試的頂部,請查閱.data()的文檔):

$(".details").click(function(){ 
     $("#dialog").empty(); 
     var data = $(this).data('price'); 
     $("#dialog").append("<p>Car:"+data+"</p>"); 
     $("#dialog").dialog("open"); 
    }); 
+0

最後,這個解決方案起作用。我不需要特性,因爲我擁有我想要在汽車陣列中顯示的所有數據。謝謝蒂姆! – David 2014-11-07 10:15:59

+0

我不明白爲什麼這得到了downvoted – 2014-11-12 23:49:57

1

有很多的方式來實現這一目標數是:

1)如果數據是動態然後使用Ajax

2)如果靜態然後以下任何可以使用 -

  • a)將php數組信息js數組存儲並使用Key將其檢索,方法是將數組鍵作爲行ID並從該行的onClick數組中獲取數據。

  • b)如果你想避免陣列然後 -

    • 我)創建與需要顯示的每一行信息的獨特股利。默認隱藏它點擊取消隱藏它並將其顯示爲對話框。
    • ii)創建一個帶有參數的js函數,並在其中啓用對話框,並將傳遞給它的信息作爲參數。對於每一行,通過將info作爲參數傳遞,在onClick事件上調用此函數。