$ .post()给出了坏的url字符串

时间:2015-07-27 23:52:44

标签: javascript php jquery ajax

我创建了一个网站,使用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>";
}

1 个答案:

答案 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]