使用FormData Jquery POST图像和字符串

时间:2015-11-13 12:10:29

标签: jquery ajax form-data

这是JQuery的一部分:

            $(".btnGorevOlustur").click(function (e) {

                var fileUpload = $(".fileGorevResim").get(0);
                var files = fileUpload.files;
                var dt = new FormData();
                for (var i = 0; i < files.length; i++) {
                    dt.append(files[i].name, files[i]);
                }

                var gPanoID = id;
                var gListeID = gorevListeID;
                var gBaslik = $(".txtGorevBaslik").val();
                var gAciklama = $(".txtareaGorevAciklama").val();
                var gSure = $(".txtGorevSure").val();

                dt.append("gpid", gPanoID);
                dt.append("glid", gListeID);
                dt.append("gbas", gBaslik);
                dt.append("gacik", gAciklama);
                dt.append("gsur", gSure);


                if (gBaslik != null && gBaslik != "" && gAciklama != null && gAciklama != "" && gSure != null && gSure != "") {
                    $.ajax({
                        type: "POST",
                        url: "PanoHandler.ashx",
                        dataType: "json",
                        data: dt,
                        contentType: false,
                        processData: false,
                    });
                    e.preventDefault();
                }
            });

这是处理程序部分:

        var gorevBaslik = context.Request.Form["gbas"];
        var gorevAciklama = context.Request.Form["gacik"];
        var gorevSure = context.Request.Form["gsur"];
        var gorevPanoID = context.Request.Form["gpid"];
        var gorevListeID = context.Request.Form["glid"];
        var tarih = DateTime.Now.ToString("ddMMyyyyHHmmss");
        if (context.Request.Files.Count > 0)
        {
            HttpFileCollection files = context.Request.Files;
            for (int i = 0; i < files.Count; i++)
            {
                HttpPostedFile file = files[i];
                string fname = context.Server.MapPath("~/img/panofoto/" + file.FileName + tarih);
                file.SaveAs(fname);
                sgFoto = file.FileName + tarih;
            }
        }
        if (!String.IsNullOrEmpty(gorevBaslik) && !String.IsNullOrEmpty(gorevAciklama) && !String.IsNullOrEmpty(gorevSure))
        {
            var gorev = new Pano_Gorev
            {
                Baslik = gorevBaslik,
                Aciklama = gorevAciklama,
                GorevSuresi = gorevSure,
                PanoID = Convert.ToInt32(gorevPanoID),
                ListeID = Convert.ToInt32(gorevListeID),
                Resim = sgFoto,
                Olusturan = 1,
                OlusturmaTarihi = DateTime.Now
            };
            dbo.Pano_Gorev.AddObject(gorev);
            dbo.SaveChanges();
            sresult = true;
            context.Response.Write(sresult);
        }
        else
        {
            sresult = false;
            context.Response.Write(sresult);
        }

问题在于处理程序,因为所有值都为null。

  context.request.Form[..] //all coming as null. 

我也尝试了以下内容:

context.request[..] 

但这也不起作用。

我该怎么做才能解决这个问题?

2 个答案:

答案 0 :(得分:1)

使用原生javascript。例如,这是html:

<form id="upload_form" enctype="multipart/form-data" method="post">
  <input type="file" name="file1" id="file1"><br>
  <input type="button" value="Upload File" onclick="uploadFile()">
</form>

这是javascript:

function uploadFile(){
    var file = _("file1").files[0];
    // alert(file.name+" | "+file.size+" | "+file.type);
    var formdata = new FormData();
    formdata.append("file1", file);
    var ajax = new XMLHttpRequest();
    ajax.open("POST", "url");
    ajax.send(formdata);
}

答案 1 :(得分:0)

我终于找到了问题。项目中的Jquery文档是旧版本,这就是为什么这些代码不起作用的问题。当我更新jquery时,代码可以正常工作。

我编辑了一些小错误。

在后果中,这段代码可以使用,问题就解决了。