2012-11-16 41 views
0

我有幾個需要幫助的問題。首先我想讓下面的重定向工作。但瀏覽器不會重定向。這是我的jspJquery Ajax重定向不起作用

function testAjax(){ 
alert("In test Ajax"); 
$.ajax({ 
    type: "GET", 
    url: "http://xyz.com/", 
    data: "param1=value1" + 
     "&target=http://abc.com" 
    , 
    success: function(data, textStatus, xhr) { 
      alert("Success "); 
      window.location.href = "http://abc.com"; 
    }, 
    error: function(data) { 
     alert("Success"); 
    }, 
    async: false 
}); 

}

參數的目標基本上是xyz.com的全部內容,這樣當該服務器執行重定向,重定向到無論是在目標。但是,當我調用這個JavaScript(通過點擊一個jsp)瀏覽器不會重定向。我試着用開發工具在Firefox上進行調試,然後我看到xyz的GET請求,它返回一個帶有位置標題的302。

+0

是否成功處理程序被調用? –

+0

是的,警報警報(「成功」)被調用。 – TYS

+0

什麼是您的服務器作爲對AJAX請求的響應發回? –

回答

0

你確定你得到一個成功的響應 - 如果你看到一個警告說「成功」,你實際上可能沒有這裏好,你有它成功和錯誤:

success: function(data, textStatus, xhr) { 
     alert("Success "); 
     window.location.href = "http://example.com"; 
}, 
error: function(data) { 
    alert("Success"); 
}, 

我推薦一下更多像:

error: function(jqXHR, textStatus, errorThrown) { 
    alert("Fail " + textStatus + " - " + errorThrown); 
}, 

這可能會指出你在正確的方向,因爲我確信如果你有真正的成功,位置會改變。

我對這個錯誤的猜測是你正試圖對另一個域進行AJAX調用,而這個域會被瀏覽器的安全阻止。您需要使用JSONP或CORS來提出跨域請求。

+0

大聲笑..好趕上..我沒有看到這兩個處理程序有相同的警報! –

+0

史蒂夫,謝謝。我現在看到錯誤 - 失敗錯誤 - [Exception ...「Failure」nsresult:「0x80004005(NS_ERROR_FAILURE)」location:「JS frame :: https://ajax.googleapis.com/ajax/libs/jquery/1.6。 3/jquery.min.js :: :: line 4「data:no] – TYS

+0

因此,現在我正在嘗試跨域」GET「ajax調用。我一直在研究並查看以下2個選項1. JSONP(但其他域中的服務器必須支持它)或讓他們爲我的域設置標題Access-Control-Allow-Origin。有沒有其他可行的選擇,我失蹤了? – TYS