2013-04-05 27 views
6

Tamam, bunu birkaç saat araştırdım ve hala güldüm.Internet Explorer 10 Gönderilmedi Ajax Gönderi Verisi

Internet explorer on jquery'yi kullanarak ajax istekleri gönderir, ancak posta verilerini içermez. İşte

kodudur:

var ajaxData = "FirstName="+encodeURIComponent($('#FirstName').val()); //get the data from the account form 
       ajaxData += "&LastName="+encodeURIComponent($('#LastName').val()); 
       ajaxData += "&EmailAddress="+encodeURIComponent($('#EmailAddress').val()); 
       ajaxData += "&CAT_Custom_246311="+encodeURIComponent(listData); 

       var config = { 
        async: false, 
        type: "POST", 
        url: "/FormProcessv2.aspx?WebFormID=44714&OID={module_oid}&OTYPE={module_otype}&EID={module_eid}&CID={module_cid}&JSON=1", 
        dataType: "json", // text"json", 
        processData: false, 
        data: ajaxData, 
        timeout: 70000, 
        cache: false, 

       }; 

       $.ajax(config) 
       .done(function(data, event) { 
        if(data.FormProcessV2Response.success == true){ //success field is in BC response 
         alert("The list was submitted sucessfully."); 
         console.log(XHR); 
        } else{ 
         alert("An error occurred and the list was not submitted."); 
        } 
       }) 
       .fail(function(msg,event) { 
        alert("An error occurred and the list was not submitted."); 
       }); 

Her diğer tarayıcı (safari, opera, krom, firefox, IE9) çalışmalarına bu izin verir, ancak kod kemancı gösterileri kullanarak bakarsak IE 10. başarısız üstbilgiler diğer tarayıcılar ile IE 10 arasında neredeyse aynıdır, ancak IE 10'un istek başlıkları, İçerik uzunluğu 0 değerine sahiptir ve gövde metni yoktur.

İnsanların sahip olduğu diğer sorunlardan bazılarına karşılık, hiç bir download yöneticisi stili eklentisi yok. Tüm eklentiler varsayılan. İşte kayıt için kullandığım eklentilerin bir fotoğrafı.

Plugins

var xmlhttp; 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText; 
    } 
    } 
xmlhttp.open("POST",config.url,true); 
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
xmlhttp.send(config.data); 
} 

Bu benim kendi verileriyle, ham istek için W3Schools'da gelen kukla metin

. İşte

Ben Medya Paketi w/Windows 8 x64 Internet Explorer 10.0.9200.16519 kullanıyorum

FirstName=Joe&LastName=Spacely&EmailAddress=tester%40test.com&CAT_Custom_246311=test%3Dtest 

(dev araçlarını kullanarak) İnternet Explorer kendisi tarafından verilen veriler için değer bir örnektir.

Internet Explorer bunu desteklemiyor mu?

Herhangi bir yardım

mutluluk duyacağız. Oh, ve lütfen bana IE'nin ne kadar kötü olduğunu söylemekten çekinmeyin. Hepimiz biliyoruz, ama biz web geliştiricileri hala bununla uğraşmak zorundayız.

+0

Sayfanızda doğru şekilde jQuery var mı? – Mooseman

+2

[w3fools] (http://w3fools.com) örnekler için pek iyi bir kaynak değildir. Buna BAD kaynağı demezdim. –

+1

Neden "processData" öğesini "false" olarak ayarlıyorsunuz? Verilerin bir sorgu dizesi oluşturuyormuşsunuz gibi görünüyor. – mattytommo

cevap

2

Gönderme:

o URL zaten orada $ _POST verilere sahip bir ilgisi var mı? Belki de bu bilgiyi değişkeninize dahil ederseniz ve sadece statik URL'niz varsa daha fazla başarı elde edersiniz. Bir sorgu dizesi oluşturmanın sürdürülmesi çok daha zor olduğundan, {anahtar: değer} çiftlerini kullanmayı düşünebilirsiniz.

+0

Yine anahtar doğru fikre dikkat ettiğiniz için teşekkürler. Genelde bunu yapıyorum ama bu durumda netlik için saf bir tel kullandım. Bunu okuyan herkese de nesneler kullanmanızı öneririm. – techdude

+0

@PlantTheldea, ie11 –

+0

@VipanKumar'da çalışmaz - daha açıklayıcı olabilir misiniz? jQuery AJAX'ı her zaman düzgün "{key: value}" çifti ile kullanıyorum ve kesinlikle IE11'de çalışıyor. – PlantTheIdea

2

Daha önce IE ve form verileri ile ilgili sorunlar yaşadım. Giriş alanlarının kimlikli bir form etiketi ile sarılmış olduğundan emin olmak için en iyi yolu buldum. Ardından, verileri gönderdiğinizde, sizin için post veri dizesini oluşturmak için jQuery .serialize() işlevini kullanın. Ayrıca

var config = { 
    async: false, 
    type: "POST", 
    url: "/FormProcessv2.aspx", //truncated for simplicity 
    dataType: "json", 
    processData: false, 
    data: $('#formName').serialize(), 
    timeout: 70000, 
    cache: false 
}; 

, sana göndermek veya düğme tıklama bir forma bu ajax yazı bağlayıcı eğer emin olmak için söz edeceğiz ihtimale o:

Yani, yapılandırma böyle bir şey olmazdı event.preventDefault() kullanarak varsayılan form gönderme eylemini engellersiniz. istendiği gibi

+0

Teşekkürler, ancak konuyla ilgili değil. Konu durumunda, bilgi bir formdan kaynaklanmaz. – techdude

İlgili konular