首页 文章

mvc $('form').submit不在部分视图上执行

提问于
浏览
0

我正在开发一个MVC 5应用程序 .

我有 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" . 我像这样在Submit上定义了一个 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 回答

  • 2

    你必须使用jquery id selector

    $('#formPhoto')
    

    代替

    $('formPhoto')
    

    另外,我尝试使用var formdata = new FormData($(this).get(0))获取部分视图数据;

    在这里创建一个包含 form 详细信息的 FormData 对象 .

    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>
    

相关问题