【问题标题】:Jquery POST image and string with FormData带有 FormData 的 Jquery POST 图像和字符串
【发布时间】:2015-11-13 12:10:28
【问题描述】:

这是 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);
        }

问题出在处理程序上,因为所有值都为空。

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

我还尝试了以下方法:

context.request[..] 

但这也不起作用。

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

【问题讨论】:

  • 你用的是什么浏览器?如果您满足developer.mozilla.org/en/docs/Web/API/… 的要求,请在此处查看。如果你不这样做,你将不得不使用表格去老学校
  • @LiviuBoboia 我正在使用 mozilla,我之前在另一个项目中使用过这些代码并且它有效。然而这一次行不通。 Ajax 可以很好地发布表单数据,没有问题,但是在处理程序上,我无法访问任何数据或值。
  • 这很奇怪,你确定你上传元素的名字和id和context.Request.Form[...]的键匹配了吗?
  • @LiviuBoboia 是的,我查过了,这是真的。我认为 context.request.Form 不足以获取数据。我正在尝试一些随机的东西,例如 context.request.Form.GetValues (只是示例),但找不到任何东西。你能投票赞成这个问题吗?
  • context.Request.Form.Keys 中有什么东西

标签: jquery ajax form-data


【解决方案1】:

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

我编辑了一些小错误。

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

【讨论】:

    【解决方案2】:

    使用原生 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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-25
      • 1970-01-01
      • 2019-05-22
      • 1970-01-01
      • 2013-05-16
      相关资源
      最近更新 更多