結果我想提交一個谷歌定製搜索查詢,而無需重新加載/刷新整個HTML頁面。我正在使用最新的v2 gcs和「僅結果」版式。加載谷歌自定義搜索不刷新頁面
載入GCS API,搜索表單上面的任何地方
<script src="//www.google.com/jsapi" type="text/javascript"></script>
<script>
google.load('search', '1',
{language : 'en', style : google.loader.themes.V2_DEFAULT});
</script>
我的自定義搜索表單
<form onsubmit="return executeQuery();" id="cse-search-box-form-id">
<input type="text" name="q" id="cse-search-input-box-id" size="25" autocomplete="off"/>
<input type="submit" id="site-search-submit" value="search"/>
</form>
地方選區結果腳本放在任何搜索結果中想
<div id="cse" style="width: 100%;">Loading</div>
<script src="http://www.google.com/jsapi" type="text/javascript"></script>
<script type="text/javascript">
google.load('search', '1', {language : 'en', style : google.loader.themes.V2_DEFAULT});
google.setOnLoadCallback(function() {
var customSearchOptions = {};
var customSearchControl = new google.search.CustomSearchControl(
'UNIQUE-API-KEY', customSearchOptions);
customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET);
var options = new google.search.DrawOptions();
options.setAutoComplete(true);
options.enableSearchResultsOnly();
customSearchControl.draw('cse', options);
function parseParamsFromUrl() {
var params = {};
var parts = window.location.search.substr(1).split('\x26');
for (var i = 0; i < parts.length; i++) {
var keyValuePair = parts[i].split('=');
var key = decodeURIComponent(keyValuePair[0]);
params[key] = keyValuePair[1] ?
decodeURIComponent(keyValuePair[1].replace(/\+/g, ' ')) :
keyValuePair[1];
}
return params;
}
var urlParams = parseParamsFromUrl();
var queryParamName = "q";
if (urlParams[queryParamName]) {
customSearchControl.execute(urlParams[queryParamName]);
}
}, true);
</script>
任何幫助表示讚賞。
謝謝
UPDATE
我已經實現,
customSearchControl.execute(urlParams[queryParamName]);
,現在我的搜索形式如下:
<form onsubmit="customSearchControl.execute(urlParams[queryParamName]);" id="cse-search-box-form-id">
<input type="text" name="q" id="cse-search-input-box-id" size="25" autocomplete="off"/>
<input type="submit" id="site-search-submit" value="search"/>
</form>
然而,執行搜索仍刷新整個頁面,哪個在jQuery腳本啓動之前引發我的初始html格式混亂。
感謝
UPDATE
我已經添加了所有品種以下的多種組合,但無論是整個頁面刷新或沒有任何反應都沒有。
<form onsubmit="return executeQuery(); return false;" id="cse-search-box-form-id">
<form onsubmit="executeQuery(); return false;" id="cse-search-box-form-id">
<form onsubmit="return false; executeQuery();" id="cse-search-box-form-id">
<form onsubmit="return false; return executeQuery();" id="cse-search-box-form-id">
<form onsubmit="customSearchControl.execute(urlParams[queryParamName]); return false;" id="cse-search-box-form-id">
<form onsubmit="return executeQuery(); event.preventDefault();" id="cse-search-box-form-id">
<form onsubmit="customSearchControl.execute(urlParams[queryParamName]); event.preventDefault();" id="cse-search-box-form-id">
<form onsubmit="customSearchControl.execute(urlParams[queryParamName]); event.stopPropagation();" id="cse-search-box-form-id">
等等...
任何人有這方面的經驗?如何進一步定製json api?這會解決頁面刷新問題嗎?
謝謝
謝謝你的迴應,iamgopal。這是否會執行查詢並更新搜索結果而不重新加載頁面?我如何使用jquery .on()來完成表單提交?或者,還有更好的方法?謝謝。 – ifthatdoesntdoit 2012-04-05 02:30:11
add return false;以提交。所以它不會重新加載整個頁面。 – iamgopal 2012-04-05 05:25:41
我已經嘗試了以上,沒有什麼是停止刷新頁面。這是殺了我的設計。我有一個隱藏的面板,可以在搜索表單的點擊或提交事件中淡入。任何一個都是無用的,因爲一旦頁面刷新一切都會被丟棄,並且jquery/javascript必須重新開始。 – ifthatdoesntdoit 2012-04-06 01:43:21