jquery+;AJAX我的javascript函数有什么问题?删除记录,添加记录而不刷新
我的JavaScript有什么问题?在不刷新页面的情况下添加记录是错误的 在一些有经验的用户的帮助下,我现在完成了完全删除。但是现在向数据库中添加记录还不起作用 我想现在动态添加记录而不刷新。。删除功能正常,并反映在数据库中 我将包括4个文件和我的数据库:jquery+;AJAX我的javascript函数有什么问题?删除记录,添加记录而不刷新,javascript,jquery,ajax,Javascript,Jquery,Ajax,我的JavaScript有什么问题?在不刷新页面的情况下添加记录是错误的 在一些有经验的用户的帮助下,我现在完成了完全删除。但是现在向数据库中添加记录还不起作用 我想现在动态添加记录而不刷新。。删除功能正常,并反映在数据库中 我将包括4个文件和我的数据库: 这些文件是我的主目录的index.php add.php用于添加记录 delete.php用于删除记录 数据库连接和配置的dbconfig index.php: delete.php: 我的javascript有什么问题,最好的解决方法是
- 这些文件是我的主目录的
index.php
用于添加记录add.php
用于删除记录delete.php
- 数据库连接和配置的dbconfig
index.php
:
delete.php
:
我的javascript有什么问题,最好的解决方法是什么
有你们推荐给像我这样的初学者的好的文本编辑器吗?从第一眼看,我可以看出id没有作为参数传递给delete.php脚本。尝试向ajax调用添加
data:info
。这可能是让它工作的第一步
我看到的另一个问题是,
$(this).attr(“id”)
不会为您提供要删除的游戏id,而是提供按钮元素的id(“Submit”
)。相反,您应该使用$(“#ID”).val()
从隐藏字段中获取值。我马上注意到一些事情
jQuery语法
首先,您的JavaScript语法已关闭。在第一个文件(index.php
)中,您有以下行:
$("#add").load("add.php") {
这不是该方法的正确语法。基本上,你有:
$("#add").load("add.php") {
// ... stuff to happen after add.php loads
}
您应该拥有的是:
$("#add").load("add.php", function() {
// .. stuff to happen after add.php loads
});
记住,您需要以回调的形式添加这个额外的功能,否则它将无法工作
不一致的呼叫
在我提到的第一个代码块中,看起来您正在尝试加载add.php
,然后在加载后启动一些JavaScript命令。但是查看add.php
文件的源代码,您不想这样做。您的add.php
文件包含处理将记录添加到数据库的服务器端代码。。。您不直接加载它,只需向它提交POST请求
无效数据
您没有正确地将数据发送到服务器。使用add例程,首先创建一个数据字符串:
var dataString = 'ID=' + id 'name='+ name + '&username=' + type + '&password=' + rating + '&gender=' + release;
然后通过AJAX将其发送到数据包中:
$.ajax({
type: "POST",
url: "add.php",
data: dataString,
success: function(){
$('.success').fadeIn(200).show();
$('.error').fadeOut(200).hide();
}
});
这里的问题是双重的。首先,您没有正确编码数据'ID='+ID'name='
缺少+
字符,将中断。但即使修复了这个问题,您也会不正确地连接数据。您的dataString
变量的最终结果如下所示:
ID=1name=Bob&username=my_user&password=password&gender=male
你看到你是如何缺少一个&
符号了吗?这是一个容易犯的错误,因此请改为发送数据对象。您不太可能错过角色:
$.ajax({
type: "POST",
url: "add.php",
data: {
},
success: function(){
$('.success').fadeIn(200).show();
$('.error').fadeOut(200).hide();
}
});
数据不匹配
接下来,将数据传递到服务器,但检查不同的值。添加数据的JavaScript看起来像是要发送:
- 身份证
- 名字
- 用户名
- 密码
- 性别
add.php
正在检查:
- 提交
- 名字
- 类型
- 得分
- 放松
delete.php?ID=5
删除ID为5的游戏
在PHP中可以很好地检查这一点,但实际上并没有在AJAX请求中发送数据。您的代码应该更像这样:
$("a.deletebutton").click(function(){
var del_id = $(this).attr("id");
var info = 'id=' + del_id;
var parent = $(this).parent();
if(confirm("Sure you want to delete this game? !")){
$.ajax({
type: "get",
url: "delete.php?" + info,
context: document.body,
success: function(){
$('.p'+del_id).html('deleted');
}
});
}
return false;
});
请参见
url:“delete.php”
变为url:“delete.php?”+info
?这会将您的ID附加到url,并使PHP中的$\u GET['ID']
可用。诸神啊,至少告诉我们什么不起作用了……请求没有发出吗?它不回来了吗?你有JS错误吗?什么!很抱歉,我是个新手,基本上问你是否删除index.php中add函数的注释没有任何效果,但是因为我注释掉了add函数,所以delete通过隐藏记录来工作,但是它没有从数据库中删除,当我刷新时,我再次看到所有记录。。至于add,我想动态地执行它,但它根本不起作用。但通过刷新,它会成功地将它们添加到数据库中。看起来您没有向delete.php传递任何数据,在delete.php中,您正在检查是否(isset($\u GET['id']),但在ajax中,您没有为该id传递任何数据字符串,我现在正在传递它,并编辑代码。但它仍然没有从web或应用程序中删除database@ryuutatsuo:谢谢我现在通过它变成了现在的url:“delete.php?”+info,data:info,对于felix,谢谢我更改了它,我仍然看到确认是否要删除记录,但它没有从页面或数据库中删除eamann,感谢所有的添加和信息,我修复了你提到的add.php的东西,但是我没有发现我正在传递的数据字符串有什么问题,以及如何修复它,我添加了缺少的+但是。。对于删除,当我按下任何删除按钮时,它现在不会从网页或数据库中删除记录。在inspect元素中,每个delete id都反映了正确的id,但仍然没有发生任何事情。如果我要为delete.php data:info添加到$.ajax,即使我添加它,它仍然不起作用。我没有触摸添加函数,但修复了您提到的所有问题。感谢您抽出时间,如果您更改了代码,请更改问题中的代码片段。否则,我们将无法看到您所做的更改,也无法提供任何其他帮助。我编辑了删除功能的脚本,以便在单击“删除”按钮时传递id,但仍不会反映在数据库或网页上。它不会被删除。我保留了添加记录,并将其注释到s
var dataString = 'ID=' + id 'name='+ name + '&username=' + type + '&password=' + rating + '&gender=' + release;
$.ajax({
type: "POST",
url: "add.php",
data: dataString,
success: function(){
$('.success').fadeIn(200).show();
$('.error').fadeOut(200).hide();
}
});
ID=1name=Bob&username=my_user&password=password&gender=male
$.ajax({
type: "POST",
url: "add.php",
data: {
},
success: function(){
$('.success').fadeIn(200).show();
$('.error').fadeOut(200).hide();
}
});
$("a.deletebutton").click(function(){
var del_id = $(this).attr("id");
var info = 'id=' + del_id;
var parent = $(this).parent();
if(confirm("Sure you want to delete this game? !")){
$.ajax({
type: "get",
url: "delete.php?" + info,
context: document.body,
success: function(){
$('.p'+del_id).html('deleted');
}
});
}
return false;
});