2014-02-08 99 views
0

我無法運行我的php腳本,點擊按鈕。

如果我通過終端運行腳本,'php get_funny_status.php'它會返回正確的輸出。但是,我無法通過AJAX做到這一點。 beginning ajax警報顯示,但我沒有得到任何responseText。

我錯過了什麼嗎?

編輯:我在Adobe Dreamweaver中測試該應用程序視圖預覽瀏覽器(我不知道這有什麼關係問題)

<script> 

$(document).ready(function() { 

    $(".nextStatus").click(function() { 

     alert('beginning ajax'); 

     var statusNumber = '5'; 

     $.get('get_funny_status.php?' + statusNumber, function(responseText) { 
      alert(responseText); 
     }); 

    }); 
}); 

</script> 

這裏是我的PHP腳本:

<?php 

    //initialize DB stuff 

    $status_text_query = "SELECT * FROM funny_status WHERE STATUS_NUM = '". $_GET['statusNumber']."'"; 

    $result = mysql_query($status_text_query); 

    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 

     echo 'num likes: ' . $row['NUM_LIKES']; 
     echo 'num dislikes: ' . $row['NUM_DISLIKES']; 
     echo 'status text: ' . $row['STATUS_TEXT']; 
     echo 'status num: ' . $row['STATUS_NUM']; 

    } 
?> 
+0

'_GET'應該是'$ _GET'。文件的路徑是否正確? –

+0

如果我是你,我會使用mysqli或PDO而不是mysql_函數。第一行是黑客喜悅,傾向於SQL注入。 –

+0

它看起來像你有一些很好的答案,從下面的工作。我還應該指出,你應該考慮修復一個巨大的SQL注入漏洞。 –

回答

0

有跡象表明,我看到幾個問題:

  1. 在你的PHP,_GET應該是$_GET

    $status_text_query = "SELECT * FROM funny_status WHERE STATUS_NUM = '" 
        . $_GET['statusNumber']."'"; 
    
  2. 在你的AJAX調用,你需要把你的參數?statusNumber=' + statusNumber, ...

    $.get('get_funny_status.php?statusNumber=' + statusNumber, 
        function(responseText) { 
    

不一定是語法錯誤:我注意到您使用mysql_*訪問數據庫。這是a bad idea;我建議切換到mysqli_*函數或PDO類。與此問題有關,如果我將statusNumber設置爲「'; DELETE FROM funny_status;--」之類的內容,我將能夠刪除該表中的所有數據。這被稱爲SQL Injection,這是一個嚴重的安全問題。

1

修復此來自:

$.get('get_funny_status.php?statusNumber', function(responseText) { 
     alert(responseText); 
    }); 

$.get('get_funny_status.php?statusNumber='+statusNumber, function(responseText) { 
     alert(responseText); 
    });