2013-06-01 69 views
3

我需要重定向到來自響應的頁面。我做了一個Ajax調用,可以處理成功。有html頁面作爲迴應,但是如何將其重定向到該頁面。
這是我的代碼。如何重定向來自ajax請求的響應

$("#launchId").live('click',function(){ 
    var id= $("#id").val(); 
    var data = 'id='+id; 
    $.ajax({ 
     url: "xyz.json", 
     type: "post", 
     data: data, 
     dataType: 'json', 
     complete : function(response) { 
      window.location.href = response;     
     } 
    }); 
}); 
+2

現場已被棄用! –

+3

@hemanth是響應一個URL? –

+0

在'window.location.href = response;'之前添加'console.log(JSON.stringify(response));'併發布你在這裏獲得的內容。 – techfoobar

回答

3

不使用AJAX將使它更容易些:

<form type="POST" action="xyz.json"> 
    <label for="id">Enter ID:</label><input id="id" name="id"> 
    <button type="submit" id="launchId">Send</button> 
</form> 

如果你真的想使用Ajax,就應該產生截然不同的服務器響應,只包含你想在你的網頁更新HTML部分或實際的JSON。

如果你堅持使用您目前得到的迴應,處理它的合適方法是document.write

$.ajax({ 
    url: "xyz.json", 
    type: "post", 
    data: data, 
    dataType: 'html', // it's no JSON response! 
    success: function(response) { 
     document.write(response); // overwrite current document 
    }, 
    error: function(err) { 
     alert(err+" did happen, please retry"); 
    } 
}); 
-2

試試這個

$("#launchId").live('click',function(){ 
    var id= $("#id").val(); 
    var data = 'id='+id; 
    $.ajax({ 
     url: "xyz.json", 
     type: "post", 
     data: data, 
     dataType: 'json', 
     complete : function(response) { 
      window.location.href = '/yourlocation?'+response;     
     } 
    }); 
}); 
+0

live方法已被棄用!!!和我沒有downvoted –

+1

Downvote顯然是語法錯誤。 – Bergi

+0

PLZ解釋什麼是「活方法已棄用」?@Baadshah –

1

你的反應是包含在responseText屬性頁面的完整HTML的對象。

您可以使用$(body).html(response.responseText);而不是window.location.href = ...;來覆蓋當前頁面的內容並獲得回覆。

... 
complete : function(response) { 
    $(body).html(response.responseText); 
} 

但我建議你不要,並且可能會有風格和其他與頁面上已存在的內容相沖突。

+0

如果整個頁面正在更新,那麼如果他只是提交表單,會更好嗎? – Tushar

+0

@TusharMathur - 是的,在這種特殊情況下,沒有真正需要AJAX的帖子。 – techfoobar

0

在HTML添加一個div id作爲「內容」,像這樣

<div id='content'/> 

因爲你的反應是HTML在您的完全功能追加內容到這樣的股利 -

complete : function(response) { 
     $('#content').append(response.responseText); 
    } 

讓我知道你是否仍然面臨問題。

3

請試試這個。

var newDoc = document.open("text/html", "replace"); 
newDoc.write(response.responseText); 
newDoc.close();