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

时间:2017-12-18 19:26:04

标签: javascript php jquery laravel

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

查看

1

脚本

if( self.avPlayer.rate == 1 ){ self.avPlayer.rate = 1; }

路线

 <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'); 中返回url

它返回什么

   public function store(Request $request)
    {

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

    }

console window是我输入的值,Navigated to http://localhost:8080/beautyproductswebapp/Public/?name=rgerge 是输入字段的rgerge

2 个答案:

答案 0 :(得分:0)

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

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

控制台中显示的行是使用GET的标准表单提交的结果(当您在 case amount' of Just amount -> print $ Account (name,1,amount) Saving Nothing -> putStrLn "Nothing" else putStrLn "Nothing" 标记中未指定“action”或“method”参数时会发生这种情况) - 它请求再次使用相同的基本URL,您的表单变量将成为附加到URL的查询字符串参数。

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

a)将按钮更改为this.setState({ conversation: [ (<div>first</div) ] }); const currentConversation = state.conversation; currentConversation.push((<div>new div</div>)); this.setState({conversation: currentConversation}) 属性(而不是<form>

b)将type="button"作为type="submit"事件处理函数中的第一行。这将运行一个JS方法,该方法可以阻止元素的默认“单击”操作(在本例中为回发)。

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

答案 1 :(得分: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 
}