2016-07-20 3 views
0

Я использую ajaxFrom запроса представить свою форму и мой код выглядит так:Как пройти динамическую переменную в ajaxForm

(function() { 
     $('#modal2From').ajaxForm({ 

      beforeSubmit: function(arr, $form, options) 
      { 
       arr.push({dataKind:'major', grade: selectedGrade }); 
      }, 

      /*dataType: "text", 
      data: { 
       dataKind: "major", 
       grade: selectedGrade 
      },*/ 

      beforeSend: function() { 

      }, 

      success: function(msg) { 
       console.log(msg); 
      }, 
      error: function(err) { 

      }, 
      complete: function(xhr) { 

      } 

     }); 

    })(); 

Проблема заключается в том, что selectedGrade является динамической переменной и с тех пор, когда я загружаю страница ajax получает вызов, selectedGrade не определен, потому что пользователь еще не выбрал оценку, поэтому я не могу получить к нему доступ $_POST['grade'] в php-файле.
Обратите внимание, что если я удалю selectedGrade от data {}, мой код отлично работает.

Вот HTML код:

<div id="modal1" class="modal modal-fixed-footer" style="text-align:right;"> 
     <form enctype="multipart/form-data" name='modal1From' role="form" id="modal1From" method="post" action="../php/upload.php"> 
      <div class="modal-content"> 

       <div class="row"> 
        <div class="file-field input-field col s12 m6 offset-m6 tool tipped"> 
         <div class="file-path-wrapper col s9 m9"> 
          <input id="modal1FilePath" class="file-path validate" type="text"> 
         </div> 
         <div class="btn col s3 m3"> 
         <span>Choose</span> 
         <input type="file" name="files" id="modal1FileUpload"> 
         </div> 
        </div> 
        <div class="progress tooltipped" id="modal1Progress" data-position="bottom" data-delay="50" data-tooltip="0%" style="top:10px;display:none;"> 
         <div class="determinate" style="width:0%;"></div> 
        </div> 
       </div> 
      </div> 

      <div class="modal-footer"> 

        <a href="#!" class="modal-action waves-effect waves-green btn-flat left modalConfirm" type="">Confirm</a> 
        <a class="waves-effect waves-light btn stop_upload_btn" style="float:left;display:none;">Stop</a> 
        <a class="modal-action modal-close waves-effect waves-green btn-flat left">close</a> 

      </div> 

     </form> 

    </div> 

Формы получает представить: $("#modal1From").submit(); на . modalConfirm нажмите

+0

Вы можете добавить одно, если условие для проверки selectedGrade перед отправкой вызова Ajax. –

+0

Так что не запускайте ajax при загрузке страницы! Лучше будет запускать ajax, когда пользователь выбрал. –

+0

Если используется, если условие ajaxForm не работает вообще! Я не знаю почему! я не так хорошо знаком с ajaxForm – Armin

ответ

0

E,

связывают ваш AJAX() вызов на какое-то событие, как,

$('button').click(function(){ 
var val = $('#selectedGrade').val(); 
if(val != '') 
{ 
    // call ajax 
} 
else 
{ 
    // show error message 
} 
}); 

это определенно поможет.

0

Вы можете установить атрибуты gradle в функции beforeSubmit.

Из ajaxForm документы:

beforeSubmit: функция обратного вызова, которая будет вызвана, прежде чем форма представлена. Обратный вызов «beforeSubmit» может быть предоставлен как крючок для , выполняющий логику предварительной отправки или для проверки данных формы. Если ответ «beforeSubmit» возвращает значение false, форма не будет отправлена ​​ . Обратный вызов 'beforeSubmit' вызывается с тремя аргументами : данные формы в формате массива, объект jQuery для формы и объект Options, переданный в ajaxForm/ajaxSubmit.

так что вы можете изменить функцию beforeSubmit следующим образом:

beforeSubmit : function(arr, $form, options){ 
    arr.push({name:'gradle', value: your-selectedGradle-value }) 
}, 
+0

Я отредактировал свой код на основе вашего ответа, но я все равно получаю неопределенную ошибку. – Armin

+0

вам не нужно использовать переменную selectedGrade, вы должны принять значение компонента html, что-то вроде $ ("# gradleId"). Val() или обновить selectedGradle var новым значением и использовать его – SiMag

Смежные вопросы