Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何使用ajax请求将数据和一个文件发布到操作_Jquery_Asp.net Mvc_Httppostedfilebase_Jquery Ajaxq - Fatal编程技术网

Jquery 如何使用ajax请求将数据和一个文件发布到操作

Jquery 如何使用ajax请求将数据和一个文件发布到操作,jquery,asp.net-mvc,httppostedfilebase,jquery-ajaxq,Jquery,Asp.net Mvc,Httppostedfilebase,Jquery Ajaxq,我想用ajax请求发送一个多参数。 例如:id=1,name=“amin”,logo:file。 在我的操作中,id类型是int,Name类型是String,Logo类型是HttpPostfileBase var ID = $("#OfficeId").val(); if (ID == "") { var imagefile1 = $("#fileInput")[0].files[0]; alert(imagefile1.name); $.ajax({ url: '@Url.

我想用ajax请求发送一个多参数。 例如:id=1,name=“amin”,logo:file。 在我的操作中,id类型是int,Name类型是String,Logo类型是HttpPostfileBase

var ID = $("#OfficeId").val();
if (ID == "") {
  var imagefile1 = $("#fileInput")[0].files[0];
  alert(imagefile1.name);
  $.ajax({
    url: '@Url.Action("Create", "Administration")',
    data: { ID: ID, Name: $("#Name").val(), ManagerName: $("#ManageName").val(), UserName: $("#UserName").val(), Password: $("#Password").val(), Address: $("#Address").val(), Wage: $("#Wage").val(), Logo: imagefile1 },
    type: "POST",
    processData: false,
    contentType: false,
    enctype: 'multipart/form-data',
    success: function (result) {           
      if (result.Success) {
        alert(result);
      }
      eval(result.Script);
    },
    error: function () {
      alert("خطا!");
    }
  });
}

但是这个代码对我不起作用。若我从ajax请求中删除徽标(一个文件参数),那个么该请求就可以正常工作。我的问题只是Logo(一个文件参数)。

您可以使用javascript的FormData对象的概念,如下所示:

您可以将所有表单交给formData进行处理

var formData = new FormData();
formData.append('ID', $("#OfficeId").val());
formData.append('Name', $("#Name").val());
formData.append('image', $("#fileInput")[0].files[0]); 
带有jQuery的Ajax请求如下所示:

$.ajax({
    url: 'Your url here',
    type: "POST",
    data: formData,
    processData: false,
    contentType: false,
    enctype: 'multipart/form-data',
    success: function (result) {

                if (result.Success) {
                   alert(result);
                }
                eval(result.Script);
            },
            error: function () {
                alert("خطا!");
            }

})

首先添加一个按钮:单击此功能的事件将向ajax调用发送id值&您将获得基于id值的数据

<button type="button" onclick="Edit(@model.ID)">Edit</button>

使用ajax请求很难实现这一点。您可以更好地使用一些插件,比如“jqueryform”,您还可以添加控制器代码吗?您是否在调试模式下检查是否在ajax调用数据块中接收图像文件?#somprabhsharma我将代码更改为您的代码,但ajax请求无法调用创建操作。?!我从js文件中得到错误:Jquery.jswork。谢谢。请把它标为答案并投票表决。
 function Edit(Get_Id) {
    var name1 = $('#ID1').val();  // save required values to send to another file
    var name2 = $('#ID2').val();

    $.ajax({

        method: 'Post',
        url: '@Url.Action("Edit","Home")', // method name & controller name.
        data: { id: Get_Id, Column_Name1: name1, Column_Name2: name2}, // bind data to column names and send to method.
        success: function () {
            alert("Data Sent")
        }
    })
}