带有ajax和jQuery serialize()的POST请求丢失值 - javascript

我正在尝试从发布请求中检索四个值,但我只得到其中两个。表单包含ID,步骤,名称和电子邮件,但我只能从隐藏的输入中获取。而不是用户填写的。我认为这可能是jquery serialize(),但我不确定。

我试图将输入更改为隐藏,然后添加value =“ something”,它可以正常工作。为什么它不能与常规文本一起使用?

//发布请求的结果:

[position_id] => 229
[step] => 1
[name] => 
[email] => 

该表格如下所示:

<form id="referral-form" action="#" method="post">

    <input type="hidden" name="position_id" value="{{$position->id}}" />
    <input type="hidden" name="step" value="1" />

    <div class="form-group">
        <input name="name" class="form-control" type="text" id="name" required/>
    </div>

    <div class="form-group">
        <input name="email" class="form-control" type="text" id="email" required />
    </div>
    <div id="legal">
        <span class="loader-button"></span>
        <div class="button submit"></div>
    </div>

</form>

我有一个javascript方法,如果用户单击.button.submit就会启动

onRef: function(e) {
    e.preventDefault();
    var $form = $("#referral-form");

    if(!$form.hasClass("ajax"))
    {
        $form.addClass("ajax");
        $form.find('.error').css('display', 'none');

        var req = $.post('/reff/ref', $form.serialize());

        req.done(function(res) {
            $form.removeClass("ajax");

            if(res.success) {
                //do somthing
            }
            else {
                methods.printErrors(res.errors, $form);

                mixpanel.track('onReferralValidationFailure', {
                    errors: res.errors,
                    positionId: exported.position.id,
                    companyId: exported.position.company_id
                });
            }
        });

        req.fail(function() {
            $form.removeClass("ajax");

            mixpanel.track('onReferralUnknownError', {
                positionId: exported.position.id,
                companyId: exported.position.company_id
            });
        });
    }
},

当我尝试在php中的/ reff / ref函数中检索发布数据时,我只会得到此数据。

[2016-07-07 11:58:39] local.INFO: Array
(
    [position_id] => 229
    [step] => 1
    [name] => 
    [email] => 
)

这是reff / ref中的功能:

 public function refer() {
    $positionId = Input::get("position_id");
    Language::setLanguageByPositionId($positionId);

    if(Input::get("step") == 1) {
        $validator = new ReferralStepOneValidator(App::make('validator'));
        $validator->with(Input::all());

        Log::info(print_r(Input::all(), true));

        if($validator->passes()) {
            $input = Input::all();


            $referral = Referral::createReferralFromInput($input);

            return Response::json(array(
                'success' => true,
                'reference' => $referral->reference,
            ));
        }
        else {
            return Response::json(array(
                'success' => false,
                'errors' => $validator->errors()->toArray(),
            ));
        }
    }

参考方案

抱歉,我无法发表评论。我正在看这个问题,并尝试了一些方法。您可以在发布前放置控制台日志吗?

<script>
$('#referral-form').click(function (e) {
    e.preventDefault();
    var $form = $("#referral-form");


    if(!$form.hasClass("ajax"))
    {
        $form.addClass("ajax");
        $form.find('.error').css('display', 'none');

        console.log($form.serialize());

        var req = $.post('/reff/ref', $form.serialize());

        req.done(function(res) {
            $form.removeClass("ajax");

            if(res.success) {
                //do somthing
            }
            else {
                methods.printErrors(res.errors, $form);

                mixpanel.track('onReferralValidationFailure', {
                    errors: res.errors,
                    positionId: exported.position.id,
                    companyId: exported.position.company_id
                });
            }
        });

        req.fail(function() {
            $form.removeClass("ajax");

            mixpanel.track('onReferralUnknownError', {
                positionId: exported.position.id,
                companyId: exported.position.company_id
            });
        });
    }
});
</script>

另外,您是否有可能在单击事件中未执行您的js函数?

如何在没有for循环的情况下在Javascript中使用Django模板标签 - javascript

我想在JavaScript中使用模板变量:我的问题是在javascript代码中使用for循环,for循环之间的所有事情都会重复..但我不想要....下面粘贴了我的代码..有人可以告诉我更好的方法吗这..因为这看起来很丑..这是我的代码: {% block extra_javascript %} <script src="/static/js…

javascript popupwindow之后的行如何工作? - javascript

好的,我有一个来自后面代码的方法,可以创建一个popupwindow。然后有一行代码要在那之后执行,我想知道那行代码何时执行,是在使用popupwindow之后执行还是在创建popupwindow之后执行?例如:void exPopupWindowMethod() { string scr = "window.open('exampleP…

在JavaScript函数中转义引号 - javascript

我正在尝试将变量传递给javascript函数。根据用户的选择,它可以是文本或图像。这里已经讨论了类似的问题,但我无法解决。在php中,我这样编码:if ($choice == 1) { $img = '<img src = "../folder/'.$_SESSION["img"].'�…

打印二维阵列 - javascript

我正在尝试打印子元素。在this example之后。怎么做?。$myarray = array("DO"=>array('IDEAS','BRANDS','CREATIVE','CAMPAIGNS'), "JOCKEY"=>a…

Javascript-Urls的奇怪字符串比较行为 - javascript

最近,在编写我无法理解的javascript时遇到了字符串比较的问题。我从完全相同的网址创建了两个字符串,当我比较它们时返回false,但是在重新分配相同的字符串后,比较返回true。这是我的示例:var str1 = "http://google.com/"; var str2 = "http://google.com‏/&#…