0

私は週末中ずっとこれに取り組んできましたが、うまくいきません。postではなくgetを使用して機能させることができます。Laravel 4とjqueryを使用しています。

私のJSは次のようになります:

$('.status').on('click', function(){
var $modal = $('#ajax-modal');
var id = $(this).attr("id");
setTimeout(function(){
 $modal.load('../status/'+id, '', function(){
 $modal.modal();
});
});
});

これにより、ブートストラップ モーダルが正常に開き、ステータス ページが読み込まれます。そのページで、ユーザーの ID を持つボタンを設定し、それがクリックされると、別の JS スニペットを呼び出します。

$modal.on('click', '.update', function(){
$modal
    .find('.modal-body')
    .html('<div class="progress progress-striped active"><div class="bar" style="width: 100%;">Processing ...</div></div>'); 
    var PostData = 'UserId='+$(this).attr("id");
    $.ajax({
        type: "POST",
        url: "",
        data:PostData,
        success: function(msg){
            $('.update').prop('disabled', true);
            setTimeout(function(){
            $modal
            .find('.modal-body')
            .html('<div class="alert-show-success"><img src="../../../public/assets/img/icons/accept.png" />This user was successfully de-activated!</div>');}, 1500);    
        },
        error: function(){
        //alert("failure");
        setTimeout(function(){
        $modal
        .find('.modal-body')
        .html('<div class="alert-show-failed"><img src="../../../public/assets/img/icons/failed.fw.png" />There was an error processing this request!</div>');}, 1500);
        }
        }); 

});

モーダルは正常にロードされ、ステータス ページは正常に検出されますが、コントローラーでは実際には何も起こりません: (テストのために 2 をハードコーディングしました。

public function postStatus()
{
    DB::table('users')
    ->where('id', 2)
    ->update(array('activated' => 0));
}

何が欠けているのかわからない。どんな助けでも大歓迎です。

4

2 に答える 2

0

このようにしてみてください:

まず、URL の名前を付けたルートをより動的なものにします。

Route::post('users/status', array('as'='user_status', 'uses'=>'Controllers\UsersController@postStatus');

次に、投稿のjQueryを変更します(これがエラーの原因だと思います)

$("a.delete").click(function () {
    var $id = $(this).attr("id");

    $.post('{{URL::route('user_status')}}',
        {
            id: $id
        }
    );

});

そしてあなたのコントローラーメソッド:

public function postStatus()
{
    if(Request::ajax()) {
        $thisID = Input::get('id');
        DB::table('users')
                ->where('id', $thisID)
                ->update(array('activated' => 0));
    }
}

試していませんが、うまくいくはずです。

于 2013-09-11T21:42:03.570 に答える