0

我整个周末都在为此工作,但无法正常工作。我可以使用 get 但不能使用 post 让它工作。我使用 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

我建议进行@Arda 建议的更改,但我相信您的 jquery 不正确。您将键设置为唯一,值设置为data

尝试这个:

$("a.delete").click(function () {
    var id = $(this).attr("id");
    $.ajax({
      type: 'post',
      url: "{{URL::route('user_status')}}", 
      data: {'id' : id}
    });

这需要使用刀片模板,但无论如何这是一个很好的做法。

于 2013-09-12T00:29:08.993 回答
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 回答