2013-09-11 2 views
0

Я работаю над этим все выходные и не могу заставить его работать. Я могу заставить его работать, используя сообщение, но не сообщение. Я использую Laravel 4 и jquery.laravel ajax post issue

My JS выглядит следующим образом:

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

, который открывает самозагрузки режимного просто отлично и загружает страницу состояния. На этой странице, я установил кнопку с идентификатором пользователя, и когда нажата, я называю еще 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); 
     } 
     }); 

});

модальные нагрузки в порядке, и он находит страницу статуса штраф, но ничего на самом деле не происходит в контроллере: (I жёстко 2 там, чтобы проверить его

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

Не уверен, что мне не хватает. . Любая помощь очень ценится

ответ

0

Попробуйте так:.

Во-первых, сделать свой маршрут с именем для URL-адресов, чтобы быть более динамичным:

Route::post('users/status', array('as'='user_status', 'uses'=>'Controllers\[email protected]'); 

Затем изменить ваш пост 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)); 
    } 
} 

не пробовал, но должно работать.

+0

Я обновлю свой код и посмотрю, работает ли это. Я фактически использую внешний JS-файл, поэтому я не могу сделать маршрут echo php, если не переместить его в представление. – Scott

+0

@Scott Затем попробуйте перейти на относительный URL. Это не имеет значения. Также изменил переменную 'id' на' $ id' и изменил json, чтобы получить это изменение, чтобы предотвратить путаницу. – Arda

+0

Я не смог выполнить эту работу. Я использую Laravel 4, если это имеет значение. Я думал, может быть, мне нужно было добавить токен, чтобы работать как должность. – Scott

0

Я рекомендую внести изменения, предложенные @Arda, но я считаю, что ваш jquery неверен. Вы устанавливаете ключ уникальным, а значение должно быть data.

Попробуйте это:

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

Это требует использования шаблона лезвия, но это довольно хорошая практика в любом случае.

+0

Не могу поверить, что я пропустил это значение данных. Я снова и снова рассматривал это и не понимал этого. – Scott

+0

Вы могли заставить его работать? Иногда, глядя на код слишком долго, просто скрывает ошибку на виду! –

+0

Нет, я до сих пор не смог заставить его работать. – Scott