2013-04-05 13 views
6

Ok, recherchierte ich für mehrere Stunden und ich bin immer noch ratlos.Internet Explorer 10 sendet keine Ajax Post-Daten

Der Internet Explorer 10 sendet AJAX-Anfragen mit jQuery, aber die Post-Daten werden nicht berücksichtigt.

Hier ist der Code:

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

Jeder andere Browser (Safari, Opera, Chrome, Firefox, Internet Explorer 9) wird diese an die Arbeit ermöglichen, aber der Code nicht in IE 10. Betrachtet man es Fiedler zeigt mit dass die Header zwischen den anderen Browsern und dem IE 10 fast identisch sind, aber die Anforderungsheader von IE 10 haben einen Inhaltslängenwert von 0, und es gibt keinen Haupttext.

In Bezug auf einige der anderen Probleme, die Menschen hatten, nein, ich habe keine Download-Manager Stil Plugins. Alle Plugins sind Standard. Hier ist ein Foto der Plugins, die ich für den Rekord habe.

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

Dies ist der Dummy-Text aus w3schools für einen rohen Wunsch mit eigenen Daten. Hier

ist ein Beispiel für den Wert für die Daten, die von Internet Explorer selbst gegeben ist (unter Verwendung von Entwickler-Tool)

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

ich Internet Explorer verwenden 10.0.9200.16519 auf Windows 8 x 64 w/Media-Pack.

Unterstützt Internet Explorer es überhaupt nicht?

Jede Hilfe wäre willkommen. Oh, und bitte erzähl mir nicht, wie schlecht IE ist. Wir alle wissen es, aber wir Web-Entwickler müssen immer noch damit umgehen.

+0

Haben Sie jQuery korrekt in Ihre Seite aufgenommen? – Mooseman

+2

[w3fools] (http://w3fools.com) ist kaum eine gute Quelle für Beispiele. Ich würde es nicht einmal eine schlechte Quelle nennen. –

+1

Warum setzen Sie 'processData' auf' false'? Es sieht so aus, als würden Sie eine Abfragezeichenfolge der Daten dort erstellen. – mattytommo

Antwort

2

Posting wie gewünscht:

Hat es etwas mit Ihrer URL $ dort bereits mit _POST Daten zu tun haben? Vielleicht, wenn Sie diese Informationen in Ihre Variable aufnehmen und nur statische URL-URLs haben mehr Erfolg.

Übrigens könnten Sie {key: value} -Paare verwenden, da das Erstellen einer Abfragezeichenfolge wesentlich schwieriger zu verwalten ist.

+0

Nochmals vielen Dank, dass Sie die Key-Val-Idee notiert haben. Normalerweise mache ich das, aber in diesem Fall habe ich eine reine Saite verwendet, um Klarheit zu schaffen. Ich würde jedem empfehlen, Objekte zu lesen. – techdude

+0

@PlantTheldea seine nicht auf IE11 –

+0

@VipanKumar arbeiten - u kann mehr beschreibend sein? weil ich jQuery AJAX mit richtigen '{key: value}' Paaren die ganze Zeit benutze, und es definitiv auf IE11 funktioniert. – PlantTheIdea

2

Ich hatte Probleme mit IE und Formulardaten zuvor. Ich fand es am besten sicherzustellen, dass meine Eingabefelder mit einem Formular-Tag mit einer ID umwickelt sind. Wenn Sie dann die Daten bereitstellen, verwenden Sie die Funktion jQuery .serialize(), um die Post-Datenzeichenfolge für Sie zu erstellen.

So würde der Config wie folgt aussehen:

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

Auch für den Fall, ich sicherstellen, erwähnen werde, wenn Sie diese Ajax-Post zu einem Formular sind verbindlich einreichen oder Schaltfläche klicken, dass Sie verhindern die Standardaktion zum Senden von Formularen mit event.preventDefault().

+0

Danke, aber das ist nicht relevant für das Thema. Im Fall des Themas stammen die Informationen nicht von einem Formular. – techdude

Verwandte Themen