jQuery到PHP发布.load 500内部服务器错误

时间:2018-07-18 19:24:44

标签: php jquery

我在谷歌上搜索了几个小时,但我仍然坚持使用它。 我正在尝试使用.load jquery函数将数据发送到php文件。 我正在尝试:

$(document).ready(function() {
        var commentCount = 2;
        $("button").click(function() {
            commentCount = commentCount + 2;
            console.log("Coment Count: " + commentCount);
            $("#comments").load("load-comments.php", {
                'commentNewCount': commentCount
            });
        });
    });

我的php应该以POST形式接收此变量,以便我可以从MySQL调用中获取信息。

$commentsNewCount = $_POST['commentNewCount'];
$more_comments->bindParam(':limits', $commentsNewCount, PDO::PARAM_INT);
$more_comments->execute();
$more_all_comments = $more_comments->fetchAll();
foreach ($more_all_comments as $key => $rs) {
    echo '<p>';
    echo $rs['author'];
    echo '<br>';
    echo $rs['message'];
    echo '</p>';
}

我从开发人员工具检查了控制台,并收到以下错误:

POST http://my_url/load-comments.php 500 (Internal Server Error)

我已经尝试在.load函数中实现try catch,但是我无法获取错误消息,我打印了几个console.log作为调试模式,但我不知道这可能是什么。错误。

这是用于实时打印的,在google中搜索但找不到类似的东西,很多人使用更复杂的函数,例如$ .ajax或类似的东西,所以我猜我的错误很简单。 / p>

请帮助我,用你的智慧。

3 个答案:

答案 0 :(得分:0)

我不确定您的jQuery是否仍然向php文件发送POST而不是GET请求,因此尝试首先在您的PHP文件中执行此操作:

if(!$_POST['commentNewCount']){
  die("No post request sent");
}elseif(isset($_GET['commentNewCount'])){
  die('It was a GET request :)');
}

答案 1 :(得分:0)

您可以使用load()传递数据,我认为错误是在服务器端,您应该在php中进行检查,调试或使用var_dump,也许您可​​以使用邮递员并在其中使用参数commentNewCount发送发帖请求身体。 ref:http://api.jquery.com/load/

如果仅传递url,load()方法将发送GET请求,但是如果传递params对象,则会发送POST请求,请选中https://github.com/jquery/jquery/blob/3d732cca6b5076a9d13eee98e2b075b37384cd91/src/ajax/load.js#L34

例如:

$( '#comments' ).load( 'load-comments.php', 
  { commentNewCount: commentCount },
  function() {
    console.log('server return');
  }
);

答案 2 :(得分:0)

首先感谢大家。有了您的所有答案,我设法解决了问题,现在,我觉得我应该告诉我所做的事情(大部分基于您的答案),并得出结论,我的错误是因为这很简单。

最后,我完成了前端文件的版本(带有jQuery代码的版本)。正如您在某些答案中提到的,我检查服务器端,我尝试使用console.log来获取服务器的响应,并实现这一目标,我还对服务器端php文件进行了硬编码,如下所示:

$commentsNewCount = $_POST['commentNewCount'];
$more_comments->bindParam(':limits', 2, PDO::PARAM_INT);
$more_comments->execute();

我收到一个关于无法引用参数的错误,所以我改为:

$more_comments->bindValue(':limits', 2, PDO::PARAM_INT);

这修复了最后一个错误,但是现在我遇到了500 POST错误的问题,首先我尝试使用console.log打印,得到的是一个空数组[],所以我在控制台中运行,在控制台中运行我的php。文件。我在那里找到错误!我的变量$ commentsNewCount被当作字符串使用,因此最后我将这一行更改为:

$more_comments->bindValue(':limits', intval($commentsNewCount), PDO::PARAM_INT);

哇!现在可以了。 根据建议,我编写了两个版本,以便我可以学习,一个是我首先提出的版本,另一个是使用.ajax的版本。外观:

原件:

<script type="text/javascript">
    //jQuery code!
    $(document).ready(function() {
        var commentCount = 2;
        $("button").click(function() {
            commentCount += 2;
            //console.log("Coment Count: " + commentCount);
            $("#comments").load("load-comments.php", {
                'commentNewCount': commentCount 
            });
        });
    });
</script>

带有.ajax的那个

<script type="text/javascript">
    //jQuery code!
    $(document).ready(function() {
        var commentCount = 2;
        $("button").click(function() {
            commentCount += 2;
            $.ajax({                        
              type: "POST",                 
              url: "load-comments.php",   
              data:"commentNewCount=" + commentCount,
              success: function(data)            
              {
                console.log(data);
              }
            });
        });
    });
</script>

再次感谢您的所有建议。我希望我的答案也能很好地编辑。