通过Ajax将数据发送到控制器

时间:2015-02-15 11:51:27

标签: php jquery ajax laravel web

我是Ajax的新手,我正在使用laravel,现在我想要一个删除按钮,将要删除的项目的ID发送到控制器。这是我的代码。

浏览

      <div class="row">
        @foreach($photos as $photo)
     <div class="col-xs-3 col-md-1">
    <button onclick="removeItem({{$photo->id}}); return false;">Delete</button>   
          </div> 
          @endforeach

        </div>

这是我现在的脚本,对此没有任何想法

     <script type="text/javascript">
    function removeItem($myvar) {
        alert($myvar);
    }
    </script>

我想将此发送到此路线

       Route::post('deletephoto','GamefarmsController@deletephoto');

1 个答案:

答案 0 :(得分:0)

您需要通过AJAX对服务器执行XMLHTTPRequest。由于您使用jQuery作为javascript库,因此使用postajax等函数可以轻松完成此类请求。

您的HTML /模板:

<button class="my_button" id="{{$photo->id}}" data-url="{{path('deletephoto')}}">Delete</button>

所以,在你的javascript函数中,使用类似的东西:

function removeItem() {

     $('button.my_button').click(function(e){
            e.preventDefault();     
            var url = $(this).attr('data-url');
        var id = $(this).attr('id');
        $.ajax({
                            type: "POST",
                            url: url,
                            data: {id:id},
                            cache: false,
                            success: function(data){

                            }
                            });

        return false;
       });

    }

详情: 我们在您的HTML按钮中添加一个包含您的路径的数据属性。如果您使用Twig作为模板引擎,您可以编写如下内容:

data-url={{path('path_delete')}}

但这取决于你的模板引擎和laravel路由方式。

然后使用attr()jQuery函数点击你的按钮:

var url = $(this).attr('data-url');

您可以应用相同的规则来获取您的身份。

最后,您应该编写一个控制器,它将使用id参数获取POST请求并执行删除操作。您可以从控制器内的请求对象获取您的id,例如:

if($request->isXmlHttpRequest())
      {
$id = (int)$request->request->get('id');

}