Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带有ajax和jquery serialize()的POST请求丢失了值_Javascript_Php_Jquery_Ajax_Post - Fatal编程技术网

Javascript 带有ajax和jquery serialize()的POST请求丢失了值

Javascript 带有ajax和jquery serialize()的POST请求丢失了值,javascript,php,jquery,ajax,post,Javascript,Php,Jquery,Ajax,Post,我试图从post请求中检索四个值,但只得到其中的两个。表单包含id、步骤、名称和电子邮件,但我只从隐藏的输入中获取它们。而不是用户填写的内容。我认为可能是jqueryserialize(),但我不确定 我曾尝试将输入更改为隐藏,然后添加value=“something”,效果很好。为什么它与常规文本一起工作 //post请求的结果: [position_id] => 229 [step] => 1 [name] => [email] => 表单如下所示: <f

我试图从post请求中检索四个值,但只得到其中的两个。表单包含id、步骤、名称和电子邮件,但我只从隐藏的输入中获取它们。而不是用户填写的内容。我认为可能是jquery
serialize()
,但我不确定

我曾尝试将输入更改为隐藏,然后添加value=“something”,效果很好。为什么它与常规文本一起工作

//post请求的结果:

[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>
当我试图在php中的/reff/ref函数中检索post数据时,我只得到了这些数据

[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>

$(“#转介表格”)。单击(功能(e){
e、 预防默认值();
var$form=$(“#转介表”);
if(!$form.hasClass(“ajax”))
{
$form.addClass(“ajax”);
$form.find('.error').css('display','none');
log($form.serialize());
var req=$.post('/reff/ref',$form.serialize());
请求完成(功能(res){
$form.removeClass(“ajax”);
如果(关于成功){
//干坏事
}
否则{
方法:打印错误(res.errors,$form);
mixpanel.track('onReferralValidationFailure'{
错误:res.errors,
positionId:exported.position.id,
companyId:exported.position.company\u id
});
}
});
请求失败(函数(){
$form.removeClass(“ajax”);
mixpanel.track('onReferralUnknownError'{
positionId:exported.position.id,
companyId:exported.position.company\u id
});
});
}
});

另外,是否有可能在单击事件时没有执行js函数?

您可以显示/reff/ref中的内容吗?确保
$form
包含所有正确的数据,并且
$form.serialize()
不会对它们产生任何影响。您可以检查发送的数据(Chrome:developers tool,network)并验证post请求中发送了哪些参数。@awl19我添加了refer ref,问题出在/reff/ref中-我猜您使用的是一个我不熟悉的框架,因此我无法确切地告诉您如何通过JSON数组传递变量,但如果您搜索“用户”或“电子邮件”在/reff/ref中,您将看到任何一个都没有被调用或定义。谢谢您的回答。执行我的Js函数。
<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>