2014-02-07 48 views
0
$('#submit').click(function(){ 
     window.location.replace("searchscreen.html"); 
      var term = $('#search').text(); 
      displaySearchEntries(term); 


     }); 

我正在編寫代碼以指向搜索結果頁面並調用javascript函數以返回相應的結果。到目前爲止,這會重定向頁面,並且displaySearchEntries(term)會被調用,但會立即消失。看起來好像重定向發生在函數調用之後,但我不知道爲什麼會發生這種情況或者如何防止它。有什麼建議麼?如何在重定向或刷新後調用函數?

+0

你必須在搜索屏幕加載後調用displaySearch函數.. 你必須在搜索屏幕加載時調用這個函數 – Shashank

+0

我試圖把它放在$(document).ready()裏面,但這似乎沒有什麼區別。 onLoad()應該不同嗎? 編輯:我試圖把display()放在onLoad =裏面,它沒有改變任何東西。 – michaelAdam

+0

.ready或on load無關緊要。 但包含函數dipslayEntries的腳本必須存在於搜索屏幕頁面中。 將通過term作爲查詢字符串傳送到searchscreen.html – Shashank

回答

1

您無法控制下一頁。一旦重定向發生,該頁面就完成了。

如果您希望在下一頁發生某些事情,您需要找到一種方法將信息傳遞到該頁面。通常通過查詢字符串,發佈表單,Cookie或本地存儲來完成。下一頁需要查找並處理數據。


基本思路使用查詢字符串:

第一頁:對重定向page.In

$('#submit').click(function(e){ 
    e.preventDefault(); 
    var term = $('#search').text(); 
    window.location.replace("searchscreen.html?search=" + encodeUriComponent(term)); 
}); 

和代碼在searchscreen.html

function getParameterByName(name) { 
    name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]"); 
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), 
     results = regex.exec(location.search); 
    return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); 
} 

$(function(){ 
    //read querystring 
    var term = getParameterByName("search"); 
    //run your search 
    if(term.length) { 
     displaySearchEntries(term); 
    } 
}); 
+0

那麼如何調用一次函數新的頁面加載? – michaelAdam

+0

你將不得不在這個新頁面上有一個onload處理程序。沒有辦法從調用下一個頁面的頁面執行此操作。 – epascarello

+0

我想用更新的[pushState](https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_history),這將是可行的..但不是一般的位置。替換或導航。 – user2864740

0

通話功能搜索screen.html使用document.ready

0

當您使用window.location時,它會殺死所有在瀏覽器中運行的腳本。您可以使用JQuery AJAX調用並使用回調函數來完成剩下的工作。

如果您不會不使用AJAX功能,唯一可行的方法是使用參數來標識重定向。

window.location = "searchscreen.html?redirect=true"; 

然後檢查重定向變量並調用$(document).ready()中的函數。