2014-02-08 98 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); 
    });