0

我正在通过 jQuery Ajax Put 通过资源控制器更新我的模型。第一次完全没有问题。这工作正常:

        $(".addNest").click(function() {
            var nid = msg; //once the LI is added, we grab the return value which is the nest ID
            var name = $('.nestIn').val();

            if(name == '') {
                $("textarea").css("border", "1px solid red");
            }else {

                $.ajax({
                    type: 'PUT', // we update the default value
                    url: 'nests/' + nid, 

                    data: {
                        'name': name
                    },
                    success: function(msg) {
                        alert(msg)
                        window.location.replace('nests/' + nid ); //redirect to the show view
                    }
                });

            }

        });

稍后在一个单独的代码块中,我尝试再次调用 PUT,如下所示:

$(".nestEdit").click(function() {

$(".nestEdit").hide();
var name = $('.nestName').data("name");
var nid = $('.nestName').data("id");

$(".nestName").html("<textarea class='updateNest'>"+ name +"</textarea> <span><a href='#' class='btn btn-mini nestUpdate'><i class='icon-plus'></i> Update</a></span>");

$(".nestUpdate").click(function() {

    var updatedName = $('.updateNest').val();

        $.ajax({
            type: 'PUT', // we update the default value
            url: 'nests/' + nid, 

            data: {
                'name': updatedName
            },
            success: function(msg) {
            alert(msg) // showing the error here
            location.reload( ); //refresh the show view
        }
    });
});

当我“警告”它们时,'updatedName' 值和 'nid' 值会正常传递。当我查看第一个 PUT 的返回时,它返回正常。但是,当我查看第二个 PUT 的回报时,我得到了这个:

{"error":{"type":"Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException","message":"","file":"\/Applications\/MAMP\/htdocs\/n4\/bootstrap\/compiled.php","line":8643}}

有人在这里有一些见解吗?如您所知,我正在尝试进行内联编辑。我试图将所有内容包装成一个函数,但仍然没有帮助......

4

2 回答 2

1

Laravel 本身不使用 PUT 和 DELETE,因为并非所有浏览器都支持它,您需要发送一个 POST 请求,并将 '_method' 设置为 put 或 delete。

$.ajax({
        type: 'POST', 
        url: 'nests/' + nid, 

        data: {
            'name': updatedName,
            '_method': update
        },
        success: function(msg) {
        alert(msg) // showing the error here
        location.reload( ); //refresh the show view
    }

编辑:Ajax 请求确实支持 PUT AND DELETE。

于 2013-05-11T00:58:15.120 回答
0

在您的 JavaScript 代码中,对于内联编辑,您没有正确使用$.

如果单击.nestEdit,它的内部函数不应该按名称调用它,前提是您在该页面上有多个相同类的对象。这就是您收到错误的原因。它不是发送嵌套 ID,而是发送一个数组对象,你的 Laravel 路由器不会接收它,因为它很可能没有定义。

简而言之,您不应该这样做:

$(".nestEdit").click(function() {
    $(".nestEdit").hide();
    ...

你应该打电话给this

$(".nestEdit").click(function() {
    $(this).hide();
    ...

因此,对于.nestEdit内部函数中的每一个,您都需要调用 for this

于 2013-05-11T06:00:05.410 回答