2011-12-28 93 views
0

嗨有人我有一個jQuery腳本提交表單,如果成功,它發送json輸出回來。Ajax和jquery重定向

function subscribe(email, city){ 
    var email = $('input#email').val(); 
    var city = $('select#citySelect').val(); 

    $.ajax({ 
     url: 'http://www.amazingvouchercodes.co.uk/avc_dev/subscribe/subscribeTo', 
     type: 'post', 
     data: 'email='+email+'&city='+city, 
     dataType: 'json', 
     success: function(json){ 
      window.location.href = json['url']; 
      $('#notifications').append('<div class="success">'+json['success']+'</div>'); 
     } 
    }); 
} 

我的問題是,它顯示的通知> JSON成功重定向重定向通知犯規演出前後,有沒有辦法來顯示重定向後的通知?

感謝所有幫助表示讚賞:)

+0

什麼是服務器端你在用框架嗎?這聽起來像是一個完美的flash範圍用例,如果你的平臺支持它的話。 – wrschneider 2011-12-28 15:18:40

+0

謝謝你) – 2011-12-28 15:55:37

回答

0

像AlienWebguy建議,

這是因爲你加載了新的一頁,所以任何JavaScript被重置。

我認爲最好的方法是在佈局/標題中設置一個元素,在屏幕頂部顯示消息(如本網站通知您橙色欄中的內容)。所以在你的Ajax頁面上,你設置了一個通知(session/cookie)變量。然後下一次加載頁面(重定向後),佈局會知道有一個待處理的通知,它會在佈局/頁眉中顯示它並清除它(因此它只會顯示一次)。

+0

我喜歡這種方法的聲音,即時通訊相當新的jQuery和jscript可以給我一些信息如何做到這一點或指向我一些閱讀材料:) – 2011-12-28 15:20:17

+0

@JoeElliott這其實是一些東西你可以用服務器端語言(比如PHP)來實現,而不是JavaScript。就像wrschneider99在你的評論中提到的一樣,如果你使用的是服務器端框架(比如CakePHP,RoR),大多數已經內置了這個。 – 2011-12-28 15:22:45

+0

我使用codeigniter,所以是會話flash消息或者其他東西:) – 2011-12-28 15:25:02

0

你不得不這樣做window.location.href = json['url'] + "?redirMsg=Foo+Bar";並在網頁上檢查是否redirMsg是在查詢字符串,如果是的話,提醒您的通知。

0

你是說你想要成功功能導致重定向,然後更新頁面上的東西,你被重定向到?

如果是這樣,您將需要做一點不同。您被重定向到的頁面將不會繼續執行在第一頁上開始執行的JavaScript。

一個選項是追加一個查詢字符串變量來告訴下一頁要更新。如:

window.location.href = json['url'] + "?msg=success"; 

然後在下一頁上,它將檢查該查詢字符串變量,並進行更新(如果存在)。

在接下來的頁面中,您可以包括像:

function getFromQuery(name){ 
    if(name=(new RegExp('[?&]'+encodeURIComponent(name)+'=([^&]*)')).exec(location.search)) 
     return decodeURIComponent(name[1]); 
} 

if (getFromQuery("msg")=="success") 
{ 
//do your update here 
$('#notifications').append('<div class="success">'+json['success']+'</div>'); 
}