我的方案如下:
在主页上,我有一个搜索框,当用户输入查询并点击搜索按钮时,表单将被提交并打开新页面,搜索查询将作为该新页面的参数,要求是我必须在新打开的页面中根据URL中的查询参数进行AJAX调用,但问题是这样当打开新页面时,它会刷新并且不返回数据,我试过了"返回false"但这只会在同一页面上起作用。
如何传递数据,以便在打开新页面时,它应该进行AJAX调用。
以下是我写的代码:
$(document).ready(function(){
var queryString = new Array();
if (queryString.length == 0) {
if (window.location.search.split('?').length > 1) {
var params = window.location.search.split('?')[1].split('&');
for (var i = 0; i < params.length; i++) {
var key = params[i].split('=')[0];
var value = decodeURIComponent(params[i].split('=')[1]);
queryString[key] = value;
}
}
}
if (queryString["q"] != null) {
var searchQuery = "<b>Search Results for:</b> " + queryString["q"] + "<br><br>";
$("#lblData").html(searchQuery);
}
$('#search-button').click(function(){
var queryValue = queryString["q"];
$('#search_results').hide();
$.getJSON( "${kb_endpoint_url}", { search_query : queryValue } )
.done(function( data ) {
console.log("success");
for (var i = 0, len = data.response.docs.length; i < len; i++) {
var title = data.response.docs[i].title;
var summary = data.response.docs[i].sectionid;
$('#search_results').html('<a href="'#'">'+title +'::'+ summary+'</a>'); }
})
.done(function() {
console.log("second success");
})
.fail(function() {
console.log("error");
})
.always(function() {
console.log("finished");
$('#search_results').show();
});
return false;
});
});