jquery – 在IE 10中成功的XMLHttpRequest之后,无法通过.Ajax发布到新的操作方法

前端之家收集整理的这篇文章主要介绍了jquery – 在IE 10中成功的XMLHttpRequest之后,无法通过.Ajax发布到新的操作方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在我的应用程序中添加了一项新功能,允许用户按步骤完成一个过程.

步骤1
选择下拉值

点击下一步按钮和第2步(ajax请求加载并呈现局部视图,呈现树视图)

点击下一步按钮

第3步(通过XMLHttpRequest上传文件)

点击下一步按钮

第4步(另一个ajax请求呈现局部视图)
由于某种原因,此请求永远不会达到控制器操作方法.奇怪的是,如果我在步骤2中发布操作方法,它将成功发布,但我对此步骤有不同的操作.

我在IE 10 Developer工具中收到以下警告

SEC7127:针对CORS请求阻止了重定向.

XMLHttpRequest: Network Error 0x800c0014,A redirection problem
occurred. SCRIPT7002: XMLHttpRequest: Network Error 0x800c0014,A
redirection problem occurred.

上述错误似乎与此步骤之前的XMLhhtprequest有关.我试图将XMLhttprequest设置为NULL或尝试将其置于其成功事件上.我在第4步中不明白,我仍然可以发布到第2步的动作,但不是一个不同的动作?

第3步

  1. function handleFiles() {
  2.  
  3. var formdata = new FormData(); //FormData object
  4. var xhr = new XMLHttpRequest();
  5. xhr.open('POST',fileUploadURL);
  6. xhr.setRequestHeader('Content-type','multipart/form-data');
  7.  
  8. //Appending file information in Http headers
  9. xhr.setRequestHeader('X-File-Name',document.getElementById('myFile').files[0].name);
  10. xhr.setRequestHeader('X-File-Type',document.getElementById('myFile').files[0].type);
  11. xhr.setRequestHeader('X-File-Size',document.getElementById('myFile').files[0].size);
  12.  
  13. //Sending file in XMLHttpRequest
  14. xhr.send(document.getElementById('myFile').files[0]);
  15. xhr.onreadystatechange = function () {
  16. if (xhr.readyState == 4 && xhr.status == 200) {
  17. $("input[id=filestoredname]").val(xhr.responseText);
  18. alert("file saved..");
  19.  
  20. }
  21. }
  22. return false;
  23. }
  24.  
  25. var instrumentSelectionUrl = '@Url.Action("Step2","ErrorCode")';//step2
  26. var finalTreeViewUrl = '@Url.Action("renderFinalTree","ErrorCode")';//step3
  27. var fileUploadURL = '@Url.Action("UploadFiles","ErrorCode")';//step3
  28.  
  29.  
  30. $(function () {
  31. $('form').stepy({
  32. backLabel: '<<',nextLabel: '>>',finishButton: false,next: function (index) {
  33. alert(index);
  34. var v = $("#InsIdLst").chosen().val();
  35. if (v == null && index == 2) {
  36. alert("Please select an Instrument");
  37. return false;
  38. }
  39. if (v != null && index == 2) {
  40. var overlay = $('<div></div>').prependTo('body').attr('id','overlay');
  41. $.ajax({
  42. type: 'POST',url: instrumentSelectionUrl,cache: false,datatype: "html",data: $("form").serialize(),success: function (result) {
  43. $("#errorCodes").html(result);
  44. overlay.remove();
  45. }
  46. });
  47. }
  48. if (index == 4) {
  49. alert("try..");
  50. $.ajax({
  51. type: 'POST',url: finalTreeViewUrl,success: function (result) {
  52. $("#errorCodesSave").html(result);
  53. }
  54. });
  55. }
  56.  
  57. }
  58. });
  59. });

解决方法

所以在第4步,如果我使用
  1. $("#errorCodesSave").load(finalTreeViewUrl,{ fileName: $("#filestoredname").val(),$("#InsIdLst").chosen().val();: 1 });

而不是$Ajax,它确实发布到预期的控制器操作.这对我来说足够好.

猜你在找的jQuery相关文章