2016-12-15 42 views
-1

這可能會非常基本,但我無法理解在頁面上的按鈕單擊事件中調用AJAX的最佳方式,並從服務器獲取數據使用php顯示。試圖通過php和ajax獲取網頁上的數據

我所擁有的是一個簡單的網頁叫div.php

<html> 
<head> 
    <title> 
     Test 
    </title> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.1/jquery.min.js"> 
     $(document).ready(function(){ 
      $('#btn').click(function(){ 
       $("#data").html('Loading...'); 

       $.ajax({ 
        url:'test.php', 
        type:'GET', 
        success:function(data){ 
         $("#data").html(data); 
        } 
       }); 
      }); 
     }); 
    </script> 
</head> 

<body> 
    <form method="get"> 
     <button id="btn"> 
      Get Data from PHP file 
     </button> 

     <div id="data"> 
     </div> 
    </form> 
</body> 
</html> 

然後它後面的頁面做數據庫操作,test.php

<?php 
    include ("config.php"); 

    $sql = "SELECT * FROM userInfo;"; 
    $result = mysql_query($sql); 

    $row = mysql_fetch_array($result, MYSQL_ASSOC); 
    $count = mysql_num_rows($result); 

    if ($count > 0) { 
     while($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 
      echo $row["userLogin"] . "<br>"; 
     } 
    } 
?> 

這是非常基本的,我應該獲取按鈕單擊的查詢結果,但它不起作用。這裏有什麼不對嗎?

任何幫助或想法瞭解PHPAJAXJS流量將非常感激。

+1

在php文件中使用'json_encode'函數對JS中的數據變量使用的數組進行編碼,然後在javascript中使用'JSON.parse(data)'。你應該真的停止使用舊的mysql函數。 http://php.net/manual/en/class.pdo.php http://php.net/manual/en/class.mysqli.php –

+0

你有沒有JS錯誤,PHP錯誤?你可以在瀏覽器中加載test.php嗎? – Chris

+0

哦,是的,'test.php'正在瀏覽器中加載查詢結果。但是當我點擊'div.php'中的按鈕時,沒有任何反應。理想情況下,它應該從'test.php'中提取查詢結果,但可悲的是它不會! – Neels

回答

2

你需要單獨嵌入JS,你不能做你做了什麼,但需要拆分如下。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.1/jquery.min.js"></script> 
<script> 
    $(document).ready(function(){ 
     $('#btn').click(function(){ 
      ... etc 
     }); 
    }); 
</script> 
+0

分離腳本似乎已經奏效。謝謝! – Neels

+0

不客氣。 – Robbie

1

這是很難調試基於有限的信息,雖然我認爲這可能是問題。您的<button>元素位於<form>元素內。這意味着當您單擊按鈕時,它將提交表單並重新加載頁面。你的AJAX可能已經工作,但頁面已經重新加載,所以你不會看到數據。解決方案:

  • 從頁面中刪除<form>或查看e.preventDefault()獲取jQuery中的按鈕點擊功能。

另一方面,您應該將您的代碼遷移到使用另一個庫(如PDO)訪問數據庫,因爲不應再使用mysql_ *函數。