2013-04-05 12 views
6

Ok, ho studiato questo per diverse ore e sono ancora perplesso.Internet Explorer 10 non inviato Ajax Post Data

Internet Explorer 10 invierà richieste Ajax utilizzando jquery, ma non includerà i dati del post.

Ecco il codice:

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

ogni altro browser (Safari, Opera, Chrome, Firefox, IE9) permetterà che questo lavoro, ma il codice non in IE 10. Guardando la cosa con spettacoli violinista che le intestazioni sono quasi le stesse tra gli altri browser e IE 10, ma le intestazioni delle richieste di IE 10 hanno un valore di lunghezza contenuto pari a 0 e non c'è testo del corpo.

In riferimento ad alcuni degli altri problemi che le persone hanno avuto, no, non ho alcun plugin in stile download manager. Tutti i plugin sono predefiniti. Ecco una foto dei plugin che ho per il record.

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

Questo è il testo fittizio da W3Schools per una richiesta di materie prime, con i miei dati.

Ecco un esempio del valore per i dati che viene data da Internet Explorer per sé (utilizzando strumenti di sviluppo)

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

Sto usando Internet Explorer 10.0.9200.16519 su Windows 8 x64 w/pacchetto software.

Internet Explorer non lo supporta affatto?

Qualsiasi aiuto sarebbe apprezzato. Oh, e per favore evita di dirmi quanto sia cattivo IE. Lo sappiamo tutti, ma noi sviluppatori web dobbiamo ancora occuparcene.

+0

Hai jQuery incluso correttamente nella tua pagina? – Mooseman

+2

[w3fools] (http://w3fools.com) non è certo una buona fonte per gli esempi. Non lo chiamerei nemmeno una fonte BAD. –

+1

Perché stai impostando 'processData' su' false'? Sembra che tu stia creando una stringa di query dei dati lì. – mattytommo

risposta

2

inviare messaggi come richiesto:

Ha qualcosa a che fare con il vostro URL già avendo $ _POST dati in là? Forse se includi queste informazioni nella tua variabile e hai solo un URL statico, avrai più successo.

BTW, potresti prendere in considerazione l'utilizzo delle coppie {chiave: valore}, poiché la creazione di una stringa di query è molto più difficile da mantenere.

+0

Ancora grazie per aver notato l'idea val key. Di solito lo faccio, ma in questo caso ho usato una corda pura per chiarezza. Consiglierei di usare anche gli oggetti a chiunque stia leggendo questo. – techdude

+0

@PlantTheldea non funziona su ie11 –

+0

@VipanKumar - puoi essere più descrittivo? perché io uso jQuery AJAX con le corrette coppie '{chiave: valore}', e sicuramente funziona su IE11. – PlantTheIdea

2

Ho avuto problemi con IE e dati di modulo prima. Ho trovato il modo migliore per assicurarmi che i miei campi di input siano avvolti con un tag form con un id. Quindi, quando pubblichi i dati, usa la funzione jQuery .serialize() per creare la stringa di dati del post per te.

Così, il vostro config sarebbe simile a questa:

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

Inoltre, nel caso in cui ne parlerò per assicurarsi che se stai vincolante questo post ajax ad una forma presentare o tasto di scatto, che si impedisce al modulo predefinito di inoltrare azioni utilizzando event.preventDefault().

+0

Grazie, ma questo non è rilevante per l'argomento. Nel caso dell'argomento, le informazioni non provengono da un modulo. – techdude

Problemi correlati