2017-02-20 1 views
0

Ich entwickle eine MVC 5 App.

Ich habe eine Parent View, die eine Partial View aufrufen, um Bild zu ändern.

Hier ist mein Aufruf von Teilansicht ...

$('formPhoto').submit(function(event) { 
    event.preventDefault(); 
    if ($(this).valid()) { 
     var formdata = new FormData($(this).get(0)); 
     $.ajax({ 
      url: this.action, 
      type: this.method, 
      data: formdata, 
      processData: false, 
      contentType: false, 
      beforeSend: function() { 
       alert(1); 
      }, 
      success: function(result) { 
       successPhoto(result); 
      }, 
      complete: function() { 
       // alert(3); 
       // And so on. 
      } 
     }); 
    } 
    return false; 
}); 

Meine Teilansicht wie folgt aussieht

My Partial View looks like this

Meine Form "FormPhoto" genannt wird. Ich habe eine Ajax Funktion auf Senden wie folgt definiert.

$('formPhoto').submit(function(event) { 
    event.preventDefault(); 
    if ($(this).valid()) { 
     var formdata = new FormData($(this).get(0)); 
     $.ajax({ 
      url: this.action, 
      type: this.method, 
      data: formdata, 
      processData: false, 
      contentType: false, 
      beforeSend: function() { 
       alert(1); 
      }, 
      success: function(result) { 
       successPhoto(result); 
      }, 
      complete: function() { 
       // alert(3); 
       // And so on. 
      } 
     }); 
    } 
    return false; 
}); 

Diese Funktion wird niemals bei Submit ausgeführt.

Was ich vermisse?

Versuchen Sie auch, ich

var formdata = new Formdata ($ (this) .get (0)) mit teilweiser Ansicht Daten zu erhalten;

Aber ich denke, dass es falsch ist.

Irgendwelche Ideen?

Tahnks?

+0

Nie Code als Bild hinterlassen. Verwenden Sie keine Snippets für Code, der trotzdem nicht ausgeführt wird. Einfach um 4 Leerzeichen einrücken, um den Code anzuzeigen. Außerdem: grundlegende Fehlerbehebung. Setzen Sie 'alert()' s in Ihren Code, um sicherzustellen, dass er überhaupt aufgerufen wird. Lies die Dokumente, die du benutzt (wie jQuery). –

Antwort

2

Sie haben eine jquery idselector verwenden:

$('#formPhoto') 

statt

$('formPhoto') 

Versuchen Sie auch, ich var formdata = new FormData($(this).get(0));

hier mit Teilansicht Daten zu erhalten du erschaffst ein FormData Objekt, das form Details enthält.

var formdata = new FormData($(this)[0]); - Dadurch werden die Formularelemente automatisch in FormData übergeben und Sie müssen die Daten nicht manuell an die Variable FormData anhängen. Hier

ein Beispiel:

$('button').click(function(){ 
 
    var formData=new FormData($('#myForm').get(0)); 
 
    console.log(formData.get('input1')); 
 
    console.log(formData.get('input2')); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form id="myForm"> 
 
    <input type="text" value="test" name="input1"/> 
 
    <input type="text2" value="test2" name="input2"/> 
 
    <button type="submit">Save</button> 
 
</form>