2013-07-18 35 views
0

我確實想用Ajax發送一個HTTP請求並且當用戶點擊一個接收響應(圖片鏈接從數據庫)鏈接。我放在Ajax函數調用中的參數是通過PHP中的循環獲得的點擊鏈接類的值。我認爲這是一個有點混亂。這裏是我的代碼Ajax請求點擊鏈接,它的類值是由PHP得到的沒有得到任何迴應

在阿賈克斯的函數調用:的index.php

<script> 
    var current = 0; 
    function showPics(str) { 
     if (str=="") { 
      document.getElementById("displayPic").innerHTML=""; 
      return; 
     } 

     xmlhttp=new XMLHttpRequest(); 

     xmlhttp.onreadystatechange = function() { 
      if (xmlhttp.readyState==4 && xmlhttp.status==200) { 
       document.getElementById("displayPic").innerHTML=xmlhttp.responseText; 
      } 
     } 

     xmlhttp.open("GET","getpics.php?q="+str,true); 
     xmlhttp.send(); 
    } 
</script> 

getpics.php

<?php 
    $q = $_GET["q"]; 

    $host = "127.0.0.1"; 
    $db = "pcqsp"; 
    $user = "root"; 
    $pass = ""; 

    try { 
     $conn = new PDO("mysql:host=$host; dbname=$db", $user, $pass); 
    } catch(Exception $e) { 
     die('Erreur : ' . $e->getMessage()); 
    } 

    $req = $conn->prepare('SELECT * FROM screenshot WHERE id_work = :id_work'); 
    $req->execute(array('id_work' => $q)); 

    while ($data = $req->fetch()) 
    { 
     echo "<img class='popup_pics' src='" . $data['link_screenshot'] . "' />"; 
    } 

    $req->closeCursor(); 
?> 

Ajax調用的index.php

<?php 
    // Open a database connection 
    $host = "127.0.0.1"; 
    $db = "pcqsp"; 
    $user = "root"; 
    $pass = ""; 

    try { 
     $conn = new PDO("mysql:host=$host; dbname=$db", $user, $pass); 
    } catch(Exception $e) { 
     die('Erreur : ' . $e->getMessage()); 
    } 

    $req = $conn -> query('SELECT * FROM work'); 
    $i = 1; 
    while ($data = $req -> fetch()) { ?> 
     <div class="image-even"> 
      <img src="<?php echo $data['cover_work'] ?>" width="421" height="590" /> 
     </div> 
     <div class="more"> 
      // Here's the problem 
      <a class="<?php echo $i ?>-popup" href="#displayPics">More details</a> 
     </div> 
     <?php 
     $i ++; 
    } 
?> 
<script type="text/javascript"> 
    $current = 0; 
    $('a[class*="popup"]').click(function(){ 
     current = $(this).attr('class').charAt(0); 
     showPics(current); //Ajax function call 
    }); 
</script> 

當我沒有做通過PHP循環(我是靜態做寫作:1-popup2-popup,等一切工作。

請問你有解決這個問題的辦法嗎?謝謝。

回答

0

您的jquery調用不是在window.ready事件內部構建的。嘗試通過執行以下操作將其包含在window.ready事件中。

<script type="text/javascript"> 
    $current = 0; 
    $(document).ready(function (e) { 
     $('a[class*="popup"]').click(function(){ 
      current = $(this).attr('class').charAt(0); 
      showPics(current); //Ajax function call 
     }); 
    }); 
</script> 

,之前DOM已準備就緒

+0

謝謝你執行你的JavaScript這是可能的。但它仍然沒有任何東西.. – Copernic

+0

你可以看到在你的瀏覽器控制,如果請求正在產生一個有效的迴應 – DevZer0

+0

@DevZero謝謝你的時間:)它給了我'狀態:200 OK'和'大小:222B 0B' – Copernic