2016-02-10 49 views
0

我無法修復javascript。該頁面使用一個XHR重定向到新頁面作爲對XHR發佈請求的響應

function openPOST(url, params, callback) { 
     var xmlhttp = new XMLHttpRequest(); 
     xmlhttp.open("POST", url, true); 
     xmlhttp.setRequestHeader('Content-Type', "application/x-www-form-rlencoded"); 
     xmlhttp.send(params); 
     xmlhttp.onreadystatechange = function() { 
      if (this.readyState === 4) { 
       if (xmlhttp.status === 200) { 
        if (callback) callback(this.responseText); 
       } 
      } 
     } 
     return xmlhttp; 
    }; 

在頁面加載的時間,請使用以下查詢

document.addEventListener('DOMContentLoaded', function() { 
     ... 
     function go() { 
      openPOST("/home/someaction", "query=123", function (count) { 
       document.querySelector("h1").textContent = count; 
      }); 
     } 
     ... 
     go(); 
     ... 
}); 

是否有可能實現這樣的代碼,ASP.NET MVC所以他轉移到另一個頁面,但沒有把結果放在另一個頁面中?

我需要將POST請求重定向到頁面到不同的地址。

下面的代碼插入結果document.querySelector("h1").textContent

public void someaction() { 
      Response.Status = "307 Temporary Redirect"; 
      Response.AddHeader("Location", "http://example.com"); 
     } 

編輯: 用戶在其瀏覽器中打開一箇舊版本我們的網頁的。此網頁向我們的網絡服務器發出ajax調用,並將響應作爲字符串插入(沒有eval(),js代碼將不起作用)。有什麼方法可以從我們的服務器重新加載這個網頁?

+0

爲什麼不使用jQuery的AJAX調用JavaScript代碼? –

+0

@BonMacalindong,該項目採用純JS,但如果使用jQuery的** ** '函數go_jQuery(){$ 阿賈克斯( 「/家/ someaction」)。完成(功能(計數){ 文件。 querySelector(「h1」)。textContent = count; }); } 頁面不會被重定向到另一個地址,頁面的代碼出現在'document.querySelector(「h1」)。textContent' – juppy

+0

你沒有被重定向的原因是因爲你正在做一個Ajax請求即使您在控制器上設置了重定向所需的響應對象。你可以在這個[SO帖子](http://stackoverflow.com/a/19795466/1504480)上查看答案 –

回答

1

在您的操作方法,你可以通過返回一個Javascript結果 [HttpPost] public ActionResult someaction() { if (Request.IsAjaxRequest()) { return JavaScript("document.location.href=\"http://www.google.com\""); } else { return Redirect("http://wwww.google.com"); } }

+0

我不太明白你的意思。返回類型爲'void' – juppy

+0

,即使您刪除了「return」重定向也不會發生 – juppy

+0

改爲使用ActionResult返回類型。編輯我的文章 –

相關問題