2016-07-20 14 views
0

ich ajaxFrom bin mit Abfrage zu übergeben meine Form und mein Code ist wie folgt einreichen:Wie eine dynamische Variable in 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) { 

      } 

     }); 

    })(); 

Das Problem ist, dass selectedGrade eine dynamische Variable ist, und da, wenn ich die Last Seite Ajax Ruft Anruf, selectedGrade ist undefined, weil der Benutzer eine Note noch nicht gewählt hat, so kann ich nicht auf $_POST['grade'] auf PHP-Datei zugreifen.
Beachten Sie, dass mein Code einwandfrei funktioniert, wenn ich selectedGrade von data {} entferne.

Hier ist HTML-Code:

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

Formulare einreichen wird: $("#modal1From").submit(); auf . modalConfirm klicken

+0

Sie können einen hinzufügen, wenn die Bedingung der selectedGrade zu überprüfen, bevor die Ajax-Aufruf zu senden. –

+0

Also nicht Ajax ausführen, wenn Seite laden! Es wird besser sein, Ajax auszuführen, wenn der Benutzer gewählt hat. –

+0

Wenn verwendet, wenn Bedingung ajaxForm überhaupt nicht funktionieren! Ich weiß nicht warum! Ich bin nicht so vertraut mit AjaxForm – Armin

Antwort

0

E, rufen

binden Ihre Ajax() auf ein Ereignis wie

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

wird es definitiv helfen.

0

Sie können die Gradle-Attribute in der beforeSubmit-Funktion festlegen.

Aus der ajaxForm docs:

beforeSubmit: Callback-Funktion aufgerufen werden, bevor das Formular ist vorgelegt. Der 'beforeSubmit'-Callback kann als Hook für bereitgestellt werden, der die Pre-Submit-Logik ausführt oder die Formulardaten validiert. Wenn der ' ' beforeSubmit'-Rückruf false zurückgibt, wird das Formular nicht übergeben. Der Callback 'beforeSubmit' wird mit drei -Argumenten aufgerufen: die Formulardaten im Array-Format, das jQuery-Objekt für das Formular und das in ajaxForm/ajaxSubmit übergebene Options-Objekt.

so können Sie Ihre beforeSubmit Funktion wie folgt ändern:

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

Ich habe meinen Code basierend auf Ihrer Antwort bearbeitet, aber ich bekomme immer noch undefined Fehler. – Armin

+0

Sie müssen die selectedGrade-Variable nicht verwenden, Sie müssen den Wert der HTML-Komponente wie $ ("# grddleId"). Val() nehmen oder die selectedGradle-Variable mit dem neuen Wert aktualisieren und verwenden – SiMag

Verwandte Themen