在laravel中使用ajax发布数据时出现问题

问题描述 投票:0回答:2

我试图使用ajax和jquery发布数据但是当我使用post方法时出现问题我得到url的结果和get方法一样,为什么会这样。在击中控制器方法后,对象应该返回aon cansole但不是

视图

 <div class="box-body">
                <form role="form">

                    <!-- select -->
                    <div class="form-group">
                        <label>Select</label>
                        <select class="form-control">
                            <option>option 1</option>
                            <option>option 2</option>
                            <option>option 3</option>
                            <option>option 4</option>
                            <option>option 5</option>
                        </select>
                    </div>
                    <!-- input states -->
                    <div class="form-group has-success">
                        <label class="control-label" for="inputSuccess"><i class="fa fa-check"></i> Input with
                            success</label>
                        <input type="text" class="form-control" id="name" name="name" placeholder="Enter ...">
                        <span class="help-block">Help block with success</span>
                    </div>

                    <div class="box-footer">
                        <button type="submit" class="btn btn-info pull-right" id="addMenu">Add Menu</button>
                    </div>
                </form>
            </div>

脚本

 <script>
        $(document).ready(function () {

            $('.ourItem').each(function () {
                $(this).click(function (event) {

                    var text = $(this).text();
                    $('#inputSuccess').val(text);
                    $('#delete').show(400);
                    $('#saveChanges').show(400);

                    // console.log(text);
                });

            });

            $('#addMenu').click(function (event) {

              var text = $('#name').val();
              $.post("menu.store", {'text':text}, function(data) {

                   console.log(data);
            });
                });

        });
    </script>

路线

Route::resource('/menu','NavegationController'); 

调节器

   public function store(Request $request)
    {

        return $values = $request->input();

    }

它应该返回对象但它在浏览器中的console window中返回url

它返回什么

Navigated to http://localhost:8080/beautyproductswebapp/Public/?name=rgerge

rgerge是我输入的值,name是输入字段的name

javascript php jquery laravel
2个回答
0
投票

您在控制台中看到的几乎肯定不是来自您的ajax请求。

您的“addMenu”按钮是一个“提交”类型按钮(根据您的HTML)。当您单击此按钮时,它将使用正常的整页刷新自动提交您的表单。这可能会在您的ajax请求开始之前发生,当然也可能在它完成之前发生。即使它完成了,结果也会立即被表单提交导致的页面刷新消除。

控制台中显示的行是使用GET的标准表单提交的结果(当您在<form>标记中未指定“action”或“method”参数时会发生这种情况) - 它再次请求相同的基本URL,并且您的表单变量成为附加到URL的查询字符串参数。

为了防止这种情况,您可以

a)将按钮更改为具有type="button"属性(而不是type="submit"

要么

b)将event.preventDefault();作为$('#addMenu').click(function (event) {事件处理函数中的第一行。这将运行一个JS方法,该方法可以阻止元素的默认“单击”操作(在本例中为回发)。

这是您当前问题的原因。正如评论中所提到的,您可能会遇到一些问题,这与您使用ajax请求的方式有关。


0
投票

那么你的ajax称它有点奇怪,显然它的错误:

$.post('/menu', function(data) {

       console.log(data);
});

然后响应也是错误的,你会想要将对象转换为json,因为它是一个ajax调用,所以这就是这样的:

public function store(Request $request)
{

    .... perform the queries or operations that you want to perform.

    if($request->wantsJson(){

        //Laravel automatically will cast the response to json 

      return response(['status'=>'ok'], 200);
    }   
   return ..view 
}
© www.soinside.com 2019 - 2024. All rights reserved.