2013-04-05 6 views
6

Ok, sprawdzałem to przez kilka godzin i wciąż jestem zakłopotany.Internet Explorer 10 nie wysyła danych postów Ajaxa

Eksplorator internetowy dziesięć będzie przesyłać żądania ajax za pomocą jquery, ale nie będzie zawierał danych postów.

Oto kod:

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."); 
       }); 

Każda inna przeglądarka (Safari, Opera, Chrome, Firefox, IE9) pozwoli to do pracy, ale kod nie działa w IE 10. Patrząc na niego przy użyciu pokazy Skrzypek że nagłówki są prawie takie same między innymi przeglądarkami a IE 10, ale nagłówki żądań IE 10 mają wartość Długość treści 0 i nie ma tekstu głównego.

W odniesieniu do niektórych innych problemów, które ludzie mają, nie, nie mam żadnych wtyczek stylu menedżera pobierania. Wszystkie wtyczki są domyślne. Oto zdjęcie wtyczek, które mam do nagrania.

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

To jest tekst manekin z w3schools dla surowego żądanie, z własnymi danymi.

Oto przykład wartości dla danych, przekazanych przez samą Internet Explorer (z wykorzystaniem narzędzi dev)

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

Używam programu Internet Explorer w systemie Windows 8 10.0.9200.16519 x64 w/Media Pack.

Czy program Internet Explorer po prostu go nie obsługuje?

Każda pomoc zostanie doceniona. Och, i proszę powstrzymać się od mówienia mi o tym, jak zły jest IE. Wszyscy to wiemy, ale my, twórcy stron internetowych, musimy sobie z tym poradzić.

+0

Czy jQuery został poprawnie dołączony do strony? – Mooseman

+2

[w3fools] (http://w3fools.com) nie jest dobrym źródłem przykładów. Nie nazwałbym tego nawet ZŁYMI źródłami. –

+1

Dlaczego ustawiasz "processData" na "false"? Wygląda na to, że tworzysz tam ciąg zapytania. – mattytommo

Odpowiedz

2

Delegowanie na żądanie:

Czy to ma coś wspólnego z tym adres URL już konieczności $ _POST danych tam? Być może, jeśli uwzględnisz te informacje w swojej zmiennej i uzyskasz statyczny URL, odniesie to więcej sukcesów.

Przy okazji, możesz rozważyć użycie par {klucz: wartość}, ponieważ tworzenie ciągu zapytania jest o wiele trudniejsze w utrzymaniu.

+0

Ponownie dziękuję za uwagę na temat klucza val. Zwykle robię to, ale w tym przypadku użyłem czystej struny dla jasności. Polecam każdemu, kto to czyta, używanie obiektów. – techdude

+0

@PlantTheldea to nie działa na ie11 –

+0

@VipanKumar - możesz być bardziej opisowy? ponieważ używam jQuery AJAX z odpowiednimi '{key: value}' parami cały czas i zdecydowanie działa na IE11. – PlantTheIdea

2

Mam problemy z IE i formularz danych wcześniej. Zauważyłem, że najlepiej jest upewnić się, że moje pola wejściowe są zawijane tagiem formularza o identyfikatorze. Następnie, publikując dane, użyj funkcji jQuery .serialize(), aby zbudować dla ciebie łańcuch danych pocztowych.

Więc twój config będzie wyglądać mniej więcej tak:

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

również na wszelki wypadek będę wspomnieć, aby upewnić się, jeśli jesteś wiązanie ajax ten post do formy przedstawienia lub kliknięcie przycisku, który uniemożliwiasz domyślny formularz przesłać akcję za pomocą event.preventDefault().

+0

Dzięki, ale nie dotyczy to tematu. W przypadku tematu informacja nie pochodzi z formularza. – techdude

Powiązane problemy