2015-08-24 4 views
7

kann ich keine neue Aktionsmethode über .Ajax posten. Ich füge eine neue Funktion in meine App ein, die es Benutzern ermöglicht, einen Vorgang in Schritten durchzuführen.Nach einer erfolgreichen Aktion XMLHttpRequest in IE 10

Schritt 1 wählen Dropdown-Wert

nächsten Treffer-Taste und Schritt 2 (Ajax-Request lädt und rendert eine Teilansicht, eine Baumansicht Rendering)

nächsten Treffer Taste

Schritt 3 (laden ein Datei über XMLHttpRequest)

nächsten Treffer Taste

Schritt 4 (eine andere ajax-Anforderung wird um eine Teilansicht zu rendern) Aus irgendeinem Grund wird diese Anfrage niemals die Controller-Aktionsmethode treffen. Was komisch ist, ist, wenn ich die Aktionsmethode in Schritt 2 poste, wird es erfolgreich posten, aber ich habe unterschiedliche Aktionen für diesen Schritt.

Ich erhalte die folgenden Warnungen in IE 10 Entwicklertools

SEC7127: Redirect wurde für CORS Anforderung blockiert.

XMLHttpRequest: Netzwerkfehler 0x800c0014, Eine Umleitung Problem aufgetreten. SCRIPT7002: XMLHttpRequest: Netzwerkfehler 0x800c0014, A Umleitungsproblem trat auf.

Die obigen Fehler scheinen mit der XMLhhtprequest vor diesem Schritt verbunden zu sein. Ich habe versucht, die XMLhttprequest auf NULL festzulegen oder versuchen, es auf seinem Erfolgsereignis zu disponieren. Ich verstehe nicht, in Schritt 4 kann ich immer noch auf Schritt 2, aber nicht auf einen anderen Eintrag posten?

Schritt 3

function handleFiles() { 

     var formdata = new FormData(); //FormData object 
     var xhr = new XMLHttpRequest(); 
     xhr.open('POST', fileUploadURL); 
     xhr.setRequestHeader('Content-type', 'multipart/form-data'); 

     //Appending file information in Http headers 
     xhr.setRequestHeader('X-File-Name', document.getElementById('myFile').files[0].name); 
     xhr.setRequestHeader('X-File-Type', document.getElementById('myFile').files[0].type); 
     xhr.setRequestHeader('X-File-Size', document.getElementById('myFile').files[0].size); 

     //Sending file in XMLHttpRequest 
     xhr.send(document.getElementById('myFile').files[0]); 
     xhr.onreadystatechange = function() { 
      if (xhr.readyState == 4 && xhr.status == 200) { 
       $("input[id=filestoredname]").val(xhr.responseText); 
       alert("file saved.."); 

      } 
     } 
       return false; 
    } 

var instrumentSelectionUrl = '@Url.Action("Step2", "ErrorCode")';//step2 
var finalTreeViewUrl = '@Url.Action("renderFinalTree", "ErrorCode")';//step3 
var fileUploadURL = '@Url.Action("UploadFiles", "ErrorCode")';//step3 


$(function() { 
    $('form').stepy({ 
     backLabel: '<<', 
     nextLabel: '>>', 
     finishButton: false, 
     next: function (index) { 
      alert(index); 
      var v = $("#InsIdLst").chosen().val(); 
      if (v == null && index == 2) { 
       alert("Please select an Instrument"); 
       return false; 
      } 
      if (v != null && index == 2) { 
       var overlay = $('<div></div>').prependTo('body').attr('id', 'overlay'); 
       $.ajax({ 
        type: 'POST', 
        url: instrumentSelectionUrl, 
        cache: false, 
        datatype: "html", 
        data: $("form").serialize(), 
        success: function (result) { 
         $("#errorCodes").html(result); 
         overlay.remove(); 
        } 
       }); 
      } 
      if (index == 4) { 
       alert("try.."); 
       $.ajax({ 
        type: 'POST', 
        url: finalTreeViewUrl, 
        cache: false, 
        datatype: "html", 
        data: $("form").serialize(), 
        success: function (result) { 
         $("#errorCodesSave").html(result); 
        } 
       }); 
      } 

     } 
    }); 
}); 
+0

Es scheint, dass die Anforderung von Schritt 3 durch eine Ursprungsübergangsdetektion blockiert wird; Wenn es nie abgeschlossen wird, könnte es sein, dass es den Browser in einem unsicheren Zustand verlässt und somit nicht in der Lage ist, die nachfolgende XHR-Anfrage zu versuchen. Wenn Sie in der Lage waren, das Ursprungsproblem zu bestätigen/zu lösen, wette ich, dass das andere Problem sich selbst lösen würde. –

+0

Schritt 3 xmlhttp 2 Anfrage ist zwar erfolgreich für das Hochladen der Datei und ich bekomme eine Erfolgs-Antwort. In Schritt 4, der nach dem Datei-Upload ist, kann ich nicht auf eine neue Domain-Controller-Aktionsmethode "renderfinaltree/errorcode" posten. In Schritt 4 kann ich noch von Schritt 2 "Step2, errorCode" an die Controller-Aktion posten. Dies ist in meiner Entwicklungsmaschine..Es ist in der Tat ein CORS-Problem, wie ich diese "SEC7127: Redirect wurde für CORS Anfrage blockiert" –

+0

Also in Schritt 4, wenn ich $ ("# errorCodesSave"). Load (finalTreeViewUrl, {fileName : $ ("# filestoredname"). val(), $ ("# InsIdLst"). selected(). val() ;: 1}); anstelle von $ Ajax, postet es die beabsichtigte Controller-Aktion. Das funktioniert gut genug für mich, ich werde nur sicherstellen, dass der Rest der Ajax-Methoden in dieser Ansicht wie erwartet funktioniert. –

Antwort

3

So in Schritt 4, wenn ich

$("#errorCodesSave").load(finalTreeViewUrl, { fileName: $("#filestoredname").val(), $("#InsIdLst").chosen().val();: 1 }); 

statt $ Ajax, um es zu der beabsichtigten Controller-Aktion veröffentlichen wird. Das funktioniert gut genug für mich.

Verwandte Themen