【问题标题】:jQuery $.get() not running php scriptjQuery $.get() 没有运行 php 脚本
【发布时间】:2014-02-08 00:59:37
【问题描述】:

我无法通过单击按钮运行我的 php 脚本。

如果我通过终端运行脚本,'php get_funny_status.php' 它会返回正确的输出。但是,我无法通过 AJAX 做到这一点。 beginning ajax 警报出现,但我没有收到任何 responseText。

我错过了什么吗?

编辑:我正在 Adob​​e 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'];   

     }  
 ?>

【问题讨论】:

  • _GET 应该是 $_GET。文件路径是否正确?
  • 如果我是你,我会使用 mysqli 或 PDO 而不是 mysql_ 函数。第一行是黑客的乐趣,容易发生 SQL 注入。
  • 看起来你有一些很好的答案可以从下面工作。我还应该指出你有一个巨大的 SQL 注入漏洞,你应该考虑修复。
  • 这些答案都没有帮助。我已经意识到语法错误并三重检查了路径名。它可能与从 Adob​​e Dreamweaver 运行 .php 有关吗?我可以从我的终端运行脚本就好了。只是不通过 Dreamweaver!
  • 你能用 XAMPP 或类似的东西来看看它是否有效吗?另外,您没有提到错误日志;运行脚本时它会填充任何内容吗?

标签: javascript php mysql ajax get


【解决方案1】:

通过以下方式解决此问题:

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

到

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

【讨论】:

    【解决方案2】:

    我发现了一些问题:

    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,这是一个严重的安全问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-01
      • 2018-06-11
      • 2013-04-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多