2010-09-12 29 views
5

Ben bir düğme tarafından tetiklenen aşağıdaki JS işlevi var:JavaScript: ajaxSubmit hatası

function uploadPicture() { 
    $("form#pictureUpload").ajaxSubmit({ 
     data: $("form#pictureform").serialize(), 
     type: 'post', 
     url: '?action=loadpicture', 
     success: function(response) { 
      $('#div-pictures').html(response); 
     } 
    }); 

}

Bu birkaç ay boyunca mükemmel iyi çalıştı. Ancak Firefox, Safari, Chrome ve Opera'da bugün çalışmayı durdurdu - hala Internet Explorer'da düzgün çalışıyor.

Safari bana şu gizemli hata veriyor:

Failed to load resource: cancelled  ?action=loadpicture 

Chrome neredeyse aynı çıkışı (: cancelled olmadan). Opera ve Firefox hiç bir hata göstermiyor. Tek ek bilgi, dosya yüklemesi bittikten sonra yukarıdaki hataların meydana gelmesi ve sunucunun tarayıcılar tarafından yok sayılan geri besleme olarak bir HTML çıktısı oluşturmasıdır.

Lütfen bunu nasıl düzelteceğiniz konusunda bir fikriniz varsa bildirin. Bir çözüme yaklaşmadan saatlerce daireler çiziyordum - sadece kodda veya kayıt dosyalarında hiçbir hata görmüyorum. Çok teşekkürler!

+0

Yanıtı bilmiyorum ama araştırmak için birkaç fikir: -Ben POST isteği yaparken? Parm = değerini belirtmenin doğru olduğunu düşünmüyorum. Normalde, bir GET isteği yaptığınızda, sağladığınız tüm parametreler bu modaya URL'ye eklenir; POST olduğunuzda, değerler form verileri gibi gönderilir. Gizli bir giriş kullanmayı deneyin. Bu konuda yanıltıcı olabilirim, normal kullanım olmasa bile izin verilir. -Bu doğru tanımlanmış olup olmadığından emin olmak için, bu kodun tanımlandığı aynı sayfaya geri gönderiyorsunuz gibi görünüyor mu? -JQuery'nin farklı bir sürümünü daha önce mi kullanıyorsunuz? – RMorrisey

+0

Hayır jQuery sürümü aynıdır. Farkında tek fark Apache ve mod-php küçük bir güncelleme oldu. – MrG

+0

'? Action = loadpicture' önceki gibi çalışıyor mu? Bu url'yi senkronize olarak aramayı denediniz mi? – dmitko

cevap

5

Bu biraz zaman aldı, ama sonunda bunu anladım. Apache yapılandırmaya eklenen bizim yöneticiler biri: çünkü http://jquery.malsup.com/form/#file-upload açıklandığı iframe kullanımının belirli tarayıcısında bir sorun nedeniyle

. Aşağıdaki her şeyi o değiştirdikten sonra tekrar (kod değişikliği!) çalışıyor:

Header append X-FRAME-OPTIONS "SAMEORIGIN" 

neyse, Safari & Chrome hata mesajı şifreli vardır. Diğer tarayıcıda herhangi bir hata mesajı olmadan garip davranış daha da kötüdür.

+1

Bunu kabul ettiğinizde, bir başkasını daha sonra başağrısı kurtaracağınızdan emin olun :) –

0

Hmmm bu deneyin Eğer onun sinirli bir sorguya veri çevirmek alacaksın serialize çağırdığınızda çünkü URL'de sorgu dizesi kullanarak shouldnt:

$("form#pictureUpload").ajaxSubmit({ 
     data: 'action=loadpicture&'+$("form#pictureform").formSerialize(), 
     type: 'post', 
     success: function(response) { 
      $('#div-pictures').html(response); 
     } 
    }); 
İlgili konular