jQuery $ .get()没有运行php脚本

时间:2014-02-08 00:59:38

标签: javascript php mysql ajax get

点击按钮,我无法运行我的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'];   

     }  
 ?>

2 个答案:

答案 0 :(得分:1)

解决此问题:

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

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

答案 1 :(得分: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) {
    
  3. 不一定是语法错误:我注意到您正在使用mysql_*来访问数据库。这是a bad idea;我建议切换到mysqli_*函数或PDO类。与此问题相关,如果我将statusNumber设置为“'; DELETE FROM funny_status;--”,我将能够删除该表中的所有数据。这称为SQL Injection,这是一个严重的安全问题。