2015-11-13 9 views
1

Это JQuery часть:Jquery POST изображение и строка с FormData

  $(".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[..] 

Но это не сработало.

Что мне делать для решения этой проблемы?

+0

Какой браузер вы используете? Проверьте здесь, если вы соответствуете требованиям https://developer.mozilla.org/en/docs/Web/API/FormData#Browser_compatibility. Если вы этого не сделаете, вам придется пойти в старую школу, используя формы –

+0

@LiviuBoboia Я использую mozilla, и я использовал этот код раньше в другом проекте, и это сработало. Однако на этот раз это не сработает. Ajax хорошо публикует formdata, нет проблемы, но на обработчике я не могу получить никаких данных или значений. –

+0

Это очень странно, вы убедились, что имя и идентификаторы для элементов загрузки соответствуют ключам для контекста. Request.Form [...]? –

ответ

0

Я, наконец, нашел проблему. Документ Jquery в проекте был старой версией, и проблема была в том, почему эти коды не работали. Когда я обновляю jquery, коды работают по-настоящему.

Я отредактировал некоторые небольшие ошибки.

В результате этот код может быть использован и проблема решена.

0

Используйте собственный 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

Спасибо за помощь. Я решил проблему. –

Смежные вопросы