2015-09-06 28 views
10

kodun içine atlamayı olanak tanır: BuradaformData nesnesi jquery AJAX postasıyla çalışmaz mı?

var formData = new FormData(); 

formData.append('name', dogName); 
formData.append('weight', dogWeight); 
formData.append('activity', dogActivity); 
formData.append('age', dogAge); 
formData.append('file', document.getElementById("dogImg").files[0]); 
console.log(formData); 

Ben sunucuya asenkron tüm bilgileri göndermek için formData nesnesine bazı dizeleri ve bir dosya nesnesi ekliyorum. Öyle görüyorum POST basit print_r var ben sunucu php dosya üzerinde, sunucuya bilgi POST çalışıyorum Yani burada

$.ajax({ 
    type: "POST", 
    url: "/foodoo/index.php?method=insertNewDog", 
    data: formData, 
    processData: false, 
    contentType: false, 
    success: function(response){ 
    console.log(response); 
    }, 
    error: function(){ 
    } 
}); 

:

Bundan hemen sonra bu jquery ajax isteği var neyin içinden geçiyor ne de değil.

Ne yazık ki, konsol.log (veri) alanındaki yanıtım boş. Ağ sekmesinde HEADER kontrol Ayrıca

Aşağıdaki boş çıktı alın: Bir ajax göndererek olduğunuzda

enter image description here

Başarı fonksiyonu (sadece açıklama) çağrılan

+0

'JSON.stringify' sadece ** düz ** nesneler/diziler ile çalışır . 'FormData' sade nesne değildir. ['FormData.getAll()'] (https: //developer.mozilla."FormData" – hindmost

+0

veri yerine org/en-US/docs/Web/API/FormData/getAll): JSON.stringify (formData.getAll())? Bu, Yakalanmamış TypeError sonuçlanır: formData.getAll işlevi –

+0

değil. O zaman 'JSON.stringify 'işlevini kullanmayın. 'FormData' olduğu gibi geçirin. – hindmost

cevap

13

jQuery ile istemek ve FormData göndermek istiyorsanız, bu FormData üzerinde JSON.stringify kullanmanız gerekmez.

  • olmadan FormData için data ayarlayın: Yani bu multipart/form-data; boundary=----WebKitFormBoundary0BPm0koKA

    gibi bir şey yapmanız gerekiyorsa jQuery ajax ile bazı dosyası dahil FormData göndermek için - boundry dahil dosyayı gönderirken Ayrıca içerik türü olmalıdır multipart/form-data herhangi bir değişiklik.

  • false için processData değerini ayarlayın (jQuery'nin verileri otomatik olarak bir sorgu dizesine dönüştürmesini engeller).
  • contentType değerini false olarak ayarlayın (Aksi halde jQuery yanlış ayarlayacağından bu gereklidir).

talebiniz şu şekilde görünmelidir:

var formData = new FormData(); 

formData.append('name', dogName); 
// ... 
formData.append('file', document.getElementById("dogImg").files[0]); 


$.ajax({ 
    type: "POST", 
    url: "/foodoo/index.php?method=insertNewDog", 
    data: formData, 
    processData: false, 
    contentType: false, 
    success: function(response) { 
     console.log(response); 
    }, 
    error: function(errResponse) { 
     console.log(errResponse); 
    } 
}); 
+0

gönder veri ile dışarı senin kodunuzu geliştirdim ve - ne yazık ki yanıt düz boş :(ve boş tarafından "null" demek istemiyorum, sadece boş bir konsol.log –

+0

Bu çalışmıyor Benim soruma bakın http://stackoverflow.com/questions/35954488/how-to-grab-formdata-being-passed-from-ajax-to-nodejs?noredirect=1#comment59565110_35954488 – Lion789

+0

formData.append (' name ', $ ("# idofinputfiled"). val()); –

3

sen aynen geçirgen anwswer yaptım ve hala belki intelligence and quick wath size onun not working

anlatıyorsun its working

dont kaygı çalışmıyor eğer enter image description here

ama network tap enter image description here

onun çalışma

umut bakmak, endişelenmeyin bu zaman kazancı

0
//For those who use plain javascript 

var form = document.getElementById('registration-form'); //id of form 
var formdata = new FormData(form); 
var xhr = new XMLHttpRequest(); 
xhr.open('POST','form.php',true); 
// xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); 
//if you have included the setRequestHeader remove that line as you need the 
// multipart/form-data as content type. 
xhr.onload = function(){ 
console.log(xhr.responseText); 
} 
xhr.send(formdata); 
+0

Yanıt verirken, orijinal sorudaki hatayı/sorunu açıklamayı düşünün ve nasıl çözdüğünüzü açıklayın. StackOverflow'daki her sorunun, Benzer sorunları çözmek için bir dizi kullanıcı ve kullanıcı olmayan. Böylece onların cevabından faydalanabilmeleri için, herkes sizin açıklamanızı tercih eder. –