【问题标题】:Post value can not get in controller后值无法进入控制器
【发布时间】:2015-10-13 14:12:01
【问题描述】:

当我试图从我的控制器获取 post 值时, 我总是得到空值。

但是如果我检查 post 值,我可以清楚地看到有 post 值,但不知何故我没有在我的控制器中获得该值。

有谁知道问题出在哪里以及为什么我没有收到帖子数据...!!!

HTML ---

<form method="post">
    <div align="center" class="col-md-10">
        <input  type="text" id= "input" name="input" >
    </div><
    <div class="form-group"><button type="submit" class="btn btn-default" id="search">
            Search
        </button></div>
</form>

javascript --

<script>
    $(document).ready(function () {
    $("#search").on('click', function (e) {
            e.preventDefault();

            var data = {};
            data['input'] = $('#input').val();
            // Submit data via AJAX§
            $.ajax({
            url: '/home',
                    type: 'post',
                    data: data,
                    success: function (data) {

                    }
            }),
              return false;      
    });
    });
</script>

控制器---

function contentAction(Request $request) {

    $tic = microtime(true);
    $request = $this->getRequest();
    $data = $request->request->get('input');
    print_r($data);

【问题讨论】:

  • 我不知道Request 太好了,但是post 也有功能吗?所以你使用函数get,但是你用post发送表单
  • 你为什么使用$request = $this-&gt;getRequest();?您已经在使用 Request $request 设置请求
  • $request-&gt;$request 是干什么用的?你能在你的控制器顶部做一个var_dump($request);(在你做任何其他事情之前)并给我们结果吗?
  • 看看你的HtmljQuery,起初不可能进行ajax 调用(触发点击事件)。检查您是否使用过class selector (.search) 并且在html 中您使用过id (search)

标签: javascript php ajax post


【解决方案1】:

这可能是最简单的答案:

function contentAction(Request $request) {
    $tic = microtime(true);
    $request = $this->getRequest();
    $data = $request->request->post('input'); //here use post instead of get
    print_r($data);
}

【讨论】:

    【解决方案2】:

    你应该在你的 ajax 函数中使用方法:“POST”

    <script>
        $(document).ready(function () {
        $("#search").on('click', function (e) {
                e.preventDefault();
    
                var data = {};
                data['input'] = $('#input').val();
                // Submit data via AJAX
                $.ajax({
                url: '/home',
                        method: 'POST', // <-- Method POST
                        data: data,
                        success: function (data) {
    
                        }
                }),
                  return false;      
        });
        });
    </script>
    

    然后在控制器中:

    $request = $this->getRequest();
    $data = $request->request->post('input');
    print_r($data);
    

    【讨论】:

      【解决方案3】:

      替换以下代码:

      $data = $request->request->get('input');
      

      用这个:

      $data = $this->request->post('input');
      print_r($data);
      

      【讨论】:

        猜你喜欢
        • 2015-06-18
        • 2022-01-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-07
        • 1970-01-01
        相关资源
        最近更新 更多