Javascript 使用jQueryAjax和php时出现了非常奇怪的错误
我正在尝试为用户发布的不同图像创建一个like按钮。这是我的html:Javascript 使用jQueryAjax和php时出现了非常奇怪的错误,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我正在尝试为用户发布的不同图像创建一个like按钮。这是我的html: <a href="#" title="like" class="likes" id="<?php echo $row['id']?>">Like</a> 这是我的javascript: <script> $(function(){ $(".likes").click(function(){ var postid = $(this).attr("id");
<a href="#" title="like" class="likes" id="<?php echo $row['id']?>">Like</a>
这是我的javascript:
<script>
$(function(){
$(".likes").click(function(){
var postid = $(this).attr("id");
alert(postid);
$.ajax({
type:'POST',
url:'likes.php',
data:'id='+postid,
success:function(data){
alert("success");
}
});
});
});
</script>
$(函数(){
$(“.likes”)。单击(函数(){
var postid=$(this.attr(“id”);
警报(postid);
$.ajax({
类型:'POST',
url:'likes.php',
数据:'id='+posted,
成功:功能(数据){
警惕(“成功”);
}
});
});
});
这是likes.php,出于测试目的,它非常简单:
<?php
require('config.php');
$postid=$_POST['id'];
echo $postid;
?>
当我单击like按钮时,一个小窗口将正确显示,然后显示“success”,这表示ajax成功,但是,当我打开likes.php时,我在第3行的C:\XAMPP\htdocs\likes.php中得到一个错误:注意:未定义的索引:id
我尝试添加e.preventDefault()。我尝试了不同的语法,比如data:'id='+postid,data:{id:postid},data:{'id':postid},等等。我基本上尝试了单引号和双引号的所有组合。我还尝试添加datatype:html和datatype:text。每次我刚收到一个提示,上面写着“success”,但当我打开likes.php时,$\u POST['id']总是未定义
有人能帮我吗?这只虫子花了我很多时间
更新:我发现即使我输入了一个完全不存在的url,比如url:“aabbll.php”,在我点击“喜欢”按钮后,我仍然会看到一个提示“成功”的窗口,为什么页面会一直提示“成功”,尽管AJAX过程显然没有成功 在新的浏览器窗口中打开like.php时,您没有发送post变量“id” 显示错误“注意:未定义索引”,因为$\u POST数组不包含id字段 您可以使用一个名为postman的chrome扩展来测试带有post变量的端点 改进代码的一个技巧是将其包装在if-isset语句中
if(isset($_POST['id'])){
// this code will only be executed if the post variable is sent to the page
$postid=$_POST['id'];
// update database
echo "Success";
}else{
echo "ERROR: No id post variable found";
}
javascript代码正在发送post变量在新的浏览器窗口中打开like.php时,您没有发送post变量“id” 显示错误“注意:未定义索引”,因为$\u POST数组不包含id字段 您可以使用一个名为postman的chrome扩展来测试带有post变量的端点 改进代码的一个技巧是将其包装在if-isset语句中
if(isset($_POST['id'])){
// this code will only be executed if the post variable is sent to the page
$postid=$_POST['id'];
// update database
echo "Success";
}else{
echo "ERROR: No id post variable found";
}
您的javascript代码正在发送post变量请尝试放置var\u dump($\u post)
,以查看您真正发布的内容 尝试放置var\u dump($\u POST)
以查看您真正发布的内容 几点建议
您的JS可以简单地
<script>
$(function() {
$('.likes').on('click', function() {
var postid = $(this).attr('id');
$.post("likes.php", {id: postid}).done(function( data ) {
alert( 'Data Loaded: ' + data );
});
});
});
$(函数(){
$('.likes')。在('click',function()上{
var postid=$(this.attr('id');
$.post(“likes.php”,{id:postid}).done(函数(数据){
警报(“数据加载:”+数据);
});
});
});
为您的PHP
<?php
if (!isset($_POST['id'])) {
/// Do what you want to do in this case.
}
$id = $_POST['id'];
// If using PHP7
$id = $_POST['id'] ?? null;
几点建议
您的JS可以简单地
<script>
$(function() {
$('.likes').on('click', function() {
var postid = $(this).attr('id');
$.post("likes.php", {id: postid}).done(function( data ) {
alert( 'Data Loaded: ' + data );
});
});
});
$(函数(){
$('.likes')。在('click',function()上{
var postid=$(this.attr('id');
$.post(“likes.php”,{id:postid}).done(函数(数据){
警报(“数据加载:”+数据);
});
});
});
为您的PHP
<?php
if (!isset($_POST['id'])) {
/// Do what you want to do in this case.
}
$id = $_POST['id'];
// If using PHP7
$id = $_POST['id'] ?? null;
打开是指在web浏览器中输入本地文件的url?是的,在我的LocalHost中打开是指在web浏览器中输入本地文件的url?是的,在我的LocalHost中打开如果我输入if(isset($\u POST['id'])并打开likes.php,无论我在isset语句中输入了什么代码,我都只会得到一个空页面。我想这是因为$\u POST是空的,但我的ajax代码似乎是正确的,我能做些什么来解决这个问题吗?我已经更新了我的答案,以便给用户一个更好的响应。如果我输入if(isset($\u POST['id']),并打开likes.php,不管我在isset语句中输入了什么代码,我都会得到一个空页面。我想这是因为$\u POST是空的,但是我的ajax代码似乎是正确的,我能做些什么来解决这个问题吗?我已经更新了我的答案,以便给用户一个更好的响应它是var\u dump而不是vardumpYup。我错了,这是var_dump不是var dump是的。我的错误。