mvc $('form')。submit不在部分视图

时间:2017-02-20 17:33:56

标签: javascript jquery ajax asp.net-mvc partial-views

我正在开发MVC 5 App。

我有Parent View调用Partial View来更改de Picture。

以下是我对部分视图的要求......

$('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;
});

我的部分视图看起来像这样

My Partial View looks like this

我的表格名为“FormPhoto”。 我在提交中定义了一个Ajax函数。

$('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;
});

此功能永远不会在提交时执行。

我缺少什么?

另外,我尝试使用

获取部分视图数据
  

var formdata = new FormData($(this).get(0));

但我认为这是不正确的。

有什么想法吗?

Tahnks?

1 个答案:

答案 0 :(得分:2)

您必须使用jquery id selector

$('#formPhoto')

代替

$('formPhoto')
  

此外,我尝试使用var formdata = new FormData($(this).get(0));

获取部分视图数据

在此创建一个包含FormData详细信息的form对象。

var formdata = new FormData($(this)[0]); - 这会自动在FormData中提交表单元素,您无需手动将数据附加到FormData变量。

以下是一个例子:

$('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>