我整个周末一直在努力,不能让它发挥作用。我可以使用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();
});
});
});
打开一个bootstrap模式就好并加载状态页面。在那个页面上,我设置了一个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));
}
不确定我错过了什么。非常感谢任何帮助。
答案 0 :(得分: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));
}
}
没试过,但应该工作。
答案 1 :(得分:0)
我建议进行@Arda建议的更改,但我相信你的jquery是不正确的。您将密钥设置为唯一,值为data
。
试试这个:
$("a.delete").click(function () {
var id = $(this).attr("id");
$.ajax({
type: 'post',
url: "{{URL::route('user_status')}}",
data: {'id' : id}
});
这需要使用刀片模板,但无论如何这都是非常好的做法。