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 のリターンを表示すると、問題なく返されます。ただし、2 番目の PUT のリターンを表示すると、次のようになります。

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

誰でもここでいくつかの洞察を持っていますか? お分かりのように、私はインライン編集をしようとしています。すべてを関数にラップしようとしましたが、まだ役に立ちません...

4

2 に答える 2

1

PUT と DELETE はすべてのブラウザでサポートされているわけではないため、Laravel はネイティブには使用しません。'_method' を put または delete に設定して POST リクエストを送信する必要があります。

$.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 と DELETE をサポートしています。

于 2013-05-11T00:58:15.120 に答える
0

あなたの JavaScript コードでは、インライン編集のために、 を適切に使用していません$

をクリックした場合.nestEdit、そのページに同じクラスの複数のオブジェクトがある場合、その内部関数は名前で呼び出すべきではありません。これがエラーが発生する理由です。ネスト ID を送信する代わりに、Laravel ルーターが取得しない配列オブジェクトを送信しています。これは、定義されていない可能性が高いためです。

簡単に言えば、これを行うべきではありません:

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

に電話をかける必要がありますthis

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

.nestEditそのため、内部関数内のすべてに対して、this代わりに for を呼び出す必要があります。

于 2013-05-11T06:00:05.410 に答える