2016-07-07 18 views
1

Я пытаюсь извлечь четыре значения из почтового запроса, но я получаю только 2 из них. Форма содержит идентификатор, шаг, имя и адрес электронной почты, но я получаю только скрытые входы. И не те, что пользователь заполняет. Я думаю, что это может быть jquery serialize(), но я не уверен.Запрос POST с ajax и jquery serialize() потерянные значения

Я попытался сменить входы на скрытые, а затем добавить значение = «что-то», и он работает. Почему это работает с обычным текстом?

// результат из запроса поста:

[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 
      }); 
     }); 
    } 
}, 

И когда я пытаюсь получить данные сообщения в функции/reff/ref в php I o Получите эти данные.

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

Это функция в REFF/исх:

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 не будет выполнена при событии click?

+0

Благодарим вас за ответ yoyr. Выполняется моя Js-функция. –