我在谷歌上搜索了几个小时,但我仍然坚持使用它。 我正在尝试使用.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>
请帮助我,用你的智慧。
答案 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>
再次感谢您的所有建议。我希望我的答案也能很好地编辑。