2016-07-07 65 views
1

我試圖從一個帖子請求中檢索四個值,但我只得到其中2個。該表單包含一個ID,步驟,名稱和電子郵件,但我只從隱藏的輸入中獲得。而不是用戶填寫的內容。我認爲這可能是jquery serialize(),但我不確定。與ajax和jQuery的序列化()丟失值的POST請求

我試圖將輸入更改爲隱藏,然後添加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> 

我有,如果用戶點擊,從而獲得發起了.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 
      }); 
     }); 
    } 
}, 
JavaScript方法

當我嘗試檢索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(), 
      )); 
     } 
    } 
+0

你可以顯示/ reff/ref中的內容嗎? – awl19

+0

確保'$ form'具有所有正確的數據,'$ form.serialize()'不會對他們做任何有趣的事情。 – apokryfos

+0

您可以檢查您發送的數據(Chrome:開發者工具,網絡)並驗證發送請求中的哪些參數正在發送。 – mrlew

回答

0

對不起,我還不能發表評論。我正在看這個問題,並嘗試了一些事情。你可以在發佈之前放置控制檯日誌嗎?

<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函數不會在點擊事件上執行?

+0

謝謝yoyr答案。我的Js函數被執行。 –