2

ajaxリクエストでマルチパラメータを送信したい。例: id=1,name="amin",logo:file 。私のアクションでは、id タイプは int で、Name タイプは String で、Logo Type は 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 リクエストからロゴ (ファイル パラメータ) を削除すると、リクエストは問題なく動作します。私の問題は単なるロゴ(ファイルパラメータ)です。

4

2 に答える 2

2

以下のように、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("خطا!");
            }

})
于 2016-05-27T09:57:32.850 に答える