javascript - Symfony 3 Form Ajax Post请求数据为空

标签 javascript php jquery ajax symfony

我显示了一个标签列表,我有一个小表单可以将另一个标签添加到该列表中。

我使用 ajax 而不是使用 symphony 原则来完成此表单,因为我想动态地将某些内容添加到列表中而不是进行页面请求。

下面的 HTML 代码显示了我如何创建表单:

            <div class="tag-form">
                <form id="tag-form" name="tagging-form" action="{{path('media_bulk_tag_route') }}" method="post">
                <input placeholder="Enter Tag" class="add-tag-input">
                <button type="submit">Add</button>
                </form>
            </div>

然后我使用 Jquery ajax 提交此表单:

$('#tag-form').on('submit',function(e){
                    e.preventDefault();
                    var data = $('form[name="tagging-form"]').serialize();
                    $.ajax({
                        type: 'POST',
                        url: $(this).attr('action'),
                        data: {request: data},
                        success: function (resp) {
                            var d = $.parseJSON(JSON.stringify(resp));
                            console.log(d);
                        },
                        complete: function () {

                        }
                    })

                });

在我的 Controller 中,我收到此请求,并且只是 var 转储它。

/**
 * Bulk tagging
 *
 * @Route("/media-tagging", name="media_bulk_tag_route")
 */
public function mediaBulkTag(Request $request)
{
    $request->request->get('request');
    VarDumper::dump($request);
    die();
}

现在的问题是,当我在网络控制台中读取此 var 转储时,数据为空。为什么会这样以及我还需要做什么。谢谢。

这是完整的转储:

DatabaseController.php on line 125:
Request {#9
  +attributes: ParameterBag {#12
    #parameters: array:3 [
      "_controller" => "MyBundle\Controller\DatabaseController::mediaBulkTag"
      "_route" => "media_bulk_tag_route"
      "_route_params" => []
    ]
  }
  +request: ParameterBag {#10
    #parameters: array:1 [
      "request" => ""
    ]
  }
  +query: ParameterBag {#11
    #parameters: []
  }
  +server: ServerBag {#15
    #parameters: array:36 [
      "USER" => "vagrant"
      "HOME" => "/home/vagrant"
      "HTTP_COOKIE" => "Phpstorm-5751b086=1fbc46ec-4192-42ec-8d23-628b66cfe7b4; adminer_version=0; PHPSESSID=hmethpqn6bsq493vpuejbg4ulm"
      "HTTP_ACCEPT_LANGUAGE" => "en-GB,en-US;q=0.8,en;q=0.6"
      "HTTP_ACCEPT_ENCODING" => "gzip, deflate, br"
      "HTTP_REFERER" => "http://localhost:8000/media-database"
      "HTTP_X_REQUESTED_WITH" => "XMLHttpRequest"
      "HTTP_ACCEPT" => "*/*"
      "HTTP_CONTENT_TYPE" => "application/x-www-form-urlencoded; charset=UTF-8"
      "HTTP_USER_AGENT" => "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
      "HTTP_ORIGIN" => "http://localhost:8000"
      "HTTP_CONTENT_LENGTH" => "8"
      "HTTP_CONNECTION" => "keep-alive"
      "HTTP_HOST" => "localhost:8000"
      "REDIRECT_STATUS" => "200"
      "SERVER_NAME" => "my.bundle"
      "SERVER_PORT" => "80"
      "SERVER_ADDR" => "10.0.2.15"
      "REMOTE_PORT" => "55895"
      "REMOTE_ADDR" => "10.0.2.2"
      "SERVER_SOFTWARE" => "nginx/1.11.9"
      "GATEWAY_INTERFACE" => "CGI/1.1"
      "SERVER_PROTOCOL" => "HTTP/1.1"
      "DOCUMENT_ROOT" => "/home/vagrant/Code/my-bundle/web"
      "DOCUMENT_URI" => "/app_dev.php"
      "REQUEST_URI" => "/media-tagging"
      "SCRIPT_NAME" => "/app_dev.php"
      "SCRIPT_FILENAME" => "/home/vagrant/Code/my-bundle/web/app_dev.php"
      "CONTENT_LENGTH" => "8"
      "CONTENT_TYPE" => "application/x-www-form-urlencoded; charset=UTF-8"
      "REQUEST_METHOD" => "POST"
      "QUERY_STRING" => ""
      "FCGI_ROLE" => "RESPONDER"
      "PHP_SELF" => "/app_dev.php"
      "REQUEST_TIME_FLOAT" => 1496303912.2553
      "REQUEST_TIME" => 1496303912
    ]
  }
  +files: FileBag {#14
    #parameters: []
  }
  +cookies: ParameterBag {#13
    #parameters: array:3 [
      "Phpstorm-5751b086" => "1fbc46ec-4192-42ec-8d23-628b66cfe7b4"
      "adminer_version" => "0"
      "PHPSESSID" => "hmethpqn6bsq493vpuejbg4ulm"
    ]
  }
  +headers: HeaderBag {#16
    #headers: array:13 [
      "cookie" => array:1 [
        0 => "Phpstorm-5751b086=1fbc46ec-4192-42ec-8d23-628b66cfe7b4; adminer_version=0; PHPSESSID=hmethpqn6bsq493vpuejbg4ulm"
      ]
      "accept-language" => array:1 [
        0 => "en-GB,en-US;q=0.8,en;q=0.6"
      ]
      "accept-encoding" => array:1 [
        0 => "gzip, deflate, br"
      ]
      "referer" => array:1 [
        0 => "http://localhost:8000/media-database"
      ]
      "x-requested-with" => array:1 [
        0 => "XMLHttpRequest"
      ]
      "accept" => array:1 [
        0 => "*/*"
      ]
      "content-type" => array:1 [
        0 => "application/x-www-form-urlencoded; charset=UTF-8"
      ]
      "user-agent" => array:1 [
        0 => "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
      ]
      "origin" => array:1 [
        0 => "http://localhost:8000"
      ]
      "content-length" => array:1 [
        0 => "8"
      ]
      "connection" => array:1 [
        0 => "keep-alive"
      ]
      "host" => array:1 [
        0 => "localhost:8000"
      ]
      "x-php-ob-level" => array:1 [
        0 => 1
      ]
    ]
    #cacheControl: []
  }
  #content: null
  #languages: null
  #charsets: null
  #encodings: null
  #acceptableContentTypes: null
  #pathInfo: "/media-tagging"
  #requestUri: "/media-tagging"
  #baseUrl: ""
  #basePath: null
  #method: "POST"
  #format: null
  #session: Session {#176
    #storage: NativeSessionStorage {#175
      #bags: array:2 [
        "attributes" => AttributeBag {#171
          -name: "attributes"
          -storageKey: "_sf2_attributes"
          #attributes: & array:1 [
            "_csrf/form" => "177Yjq_CGVSRLnuBjNTVcsQ3a5Tgzi5-lC8DQDpcE9g"
          ]
        }
        "flashes" => FlashBag {#170
          -name: "flashes"
          -flashes: & []
          -storageKey: "_sf2_flashes"
        }
      ]
      #started: true
      #closed: false
      #saveHandler: SessionHandlerProxy {#172
        #handler: NativeFileSessionHandler {#174}
        #wrapper: true
        #saveHandlerName: "files"
      }
      #metadataBag: MetadataBag {#173
        -name: "__metadata"
        -storageKey: "_sf2_meta"
        #meta: & array:3 [
          "u" => 1496303912
          "c" => 1496303203
          "l" => "0"
        ]
        -lastUsed: 1496303903
        -updateThreshold: "0"
      }
    }
    -flashName: "flashes"
    -attributeName: "attributes"
  }
  #locale: null
  #defaultLocale: "en"
  -isForwardedValid: true
}

最佳答案

输入没有name标签

更改此:

<input placeholder="Enter Tag" class="add-tag-input">

以此为例

<input placeholder="Enter Tag" class="add-tag-input" name="your-input">

关于javascript - Symfony 3 Form Ajax Post请求数据为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44301802/

相关文章:

php - MySQL 或 PHP 来计算总记录的百分比?

javascript - 代码不适用于更大范围的数字

Javascript:填充十进制数的开头和结尾以形成固定长度的字符串

PHP 5.3.0 USE 关键字——如何在 5.2 中向后移植?

php - 无法使用jquery和ajax删除多个用户(codeigniter 3)

javascript - 基于另一个复选框选中/取消选中复选框

javascript - Return Promise 和await 是一样的吗?

javascript - Angular ui-select 标记在模糊时丢失文本输入

javascript - JQuery - .keyup() 与 if 语句(2 位数字)

javascript - 较少的 mixin 循环类但具有不同的值