我创建了一个网站,使用ajax和jQuery显示动态创建的HTML。
在一方面,它显示了与数据库表不同的条目,并且在每一行上都有一个按钮,用于从数据库中删除该特定条目。这是应该实现的代码:
$('body').on('click', '.deleteWaitlist', function(){
console.log("Clicked on .deleteWaitlist name = " + $(this).attr('name'));
// Get the varible name to send to your php
var i = $(this).attr('name');
console.log( "$(this).attr('name') = i" );
$.post({
url: "deleteWaitlist.php",
data: { id : i},
success: function(result){
console.log("Ajax success " + result);
},
//dataType: "html"
});
return false;
});
然而,当我点击按钮时出现错误
POST localhost:8888/workplace/site/[object%20Object] 404 (Not Found)
如果我错了,请纠正我,但是[object%20Object]是我们从未定义的toSting()方法得到的吗?我尝试指定不同类型的dataTypes但没有区别。
我似乎无法找到问题,dataType可以是xml,json,script或html之外的东西吗?此功能不会返回任何内容,因此甚至不需要dataType吗?
这是deleteWaitlist.php:
<?php
include("con.php");
$sql = "DELETE FROM waitlist WHERE id=" . $_POST[id] . "";
mysqli_query($c,$sql);
?>
编辑:为了澄清,上面提到的错误仅在控制台上显示,因为我想要一个异步站点大多数按钮阻止导航。在实际页面上单击按钮无效。此外,这是创建按钮的代码:
while ($places = mysqli_fetch_array($result)) {
echo "<tr>";
echo "<td>". $places ['ID']."</td>";
echo "<td>". $places ['NAME']."</td>";
echo "<td>". $places ['CHAIRS']."</td>";
echo "<td>". $places ['CREATED']."</td>";
echo '<td>
<button class="btn btn-default deleteWaitlist" type="submit" name="' . $places['ID'] . '">X</button>
</td>';
echo "</tr>";
}
答案 0 :(得分:5)
$ .post期望第一个参数是一个URL字符串 如果要使用其他选项传递对象,则必须使用$ .ajax。
尝试
$.ajax({
type: "POST",
url: "deleteWaitlist.php",
data: { id : i},
success: function(result){
console.log("Ajax success " + result);
}
});
如果我错了,请纠正我,但是[object%20Object]是我们从未定义的toSting()方法得到的吗?
你是对的。当你使用带有第一个参数的$ .post作为对象时,jQuery认为它是post url并且对该参数执行toString()。在您的情况下,它会像object.toString()
一样抛出错误[object%20Object]