Antwort #87 am: 16. Oktober 2009, 13:34:30
Hallo.
Bei mir funktioniert die Searchsuggest soweit. Er schlägt das Ganze vor, aber wenn ich dann auf einen Vorschlag klicke, komme ich immer auf
http://localhost/xtcommerce/advanced_search_result.php?keywords= und es werden eben alle Artikel angezeigt. Das ist irgendwie doof.
Und das ist bei allen Artikeln so.
Ich hab bei der AjaxSuggest.js (von Gunnart so die Tipps übernommen) nur unten den top.location.href geändert.
Kann mir jemand sagen, an was es liegen könnte, dass beim Anklicken kein Produktname übernommen wird?
/*----------------------------Suggest Code-------------------------*/
/*
This is the JavaScript file for the osCommerce AJAX Search Suggest
You may use this code in your own projects as long as this
copyright is left in place. All code is provided AS-IS.
This code is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
For the rest of this code visit http://www.osCommerce-SSL.com
For a complete detailed tutorial on how this code works visit:
http://www.dynamicajax.com/fr/AJAX_Suggest_Tutorial-271_290_312.html
For more AJAX code and tutorials visit http://www.DynamicAJAX.com
Copyright 2006 Ryan Smith / 345 Technical / 345 Group.
Auf XT-Commerce portiert von TechWay (Steffen Decker) mit Unterstützung von Purecut (aus dem (( Wir dulden keine kommerziellen Werbelinks - Bitte <a href="index.php?topic=3013.0">Forenregeln</a> beachten! )) Forum)
Copyright 2006 @ TechWay, Steffen Decker
*/
//Gets the browser specific XmlHttpRequest Object
function getXmlHttpRequestObject() {
if (window.XMLHttpRequest) {
return new XMLHttpRequest();
} else if(window.ActiveXObject) {
return new ActiveXObject("Microsoft.XMLHTTP");
} else {
alert("Your Browser Sucks!\nIt's about time to upgrade don't you think?");
}
}
//Our XmlHttpRequest object to get the auto suggest
var searchReq = getXmlHttpRequestObject();
//Called from keyup on the search textbox.
//Starts the AJAX request.
function searchSuggest() {
if (searchReq.readyState == 4 || searchReq.readyState == 0) {
var str = escape(document.getElementById('txtSearch').value);
searchReq.open("GET", 'searchSuggest.php?search=' + str, true);
searchReq.onreadystatechange = handleSearchSuggest;
searchReq.send(null);
}
}
//Called when the AJAX response is returned.
function handleSearchSuggest() {
if (searchReq.readyState == 4) {
var ss = document.getElementById('search_suggest')
ss.innerHTML = '';
var str = searchReq.responseText.split("\n");
for(i=0; i <str.length - 1; i++) {
//Build our element string. This is cleaner using the DOM, but
//IE doesn't support dynamically added attributes.
var suggest = '<div onmouseover="javascript:suggestOver(this);" ';
suggest += 'onmouseout="javascript:suggestOut(this);" ';
suggest += 'onclick="javascript:setSearch(this.innerHTML);" ';
suggest += 'class="suggest_link">' + str[i] + '</div>';
ss.innerHTML += suggest;
}
if (i==0) {
ss.style.visibility = "hidden";
} else {
ss.style.visibility = "visible";
}
//Schließen link einfügen
ss.innerHTML += '<p align="right"><a onmouseover="javascript:suggestOver(this);" onmouseout="javascript:suggestOut(this);" onClick="javascript:suggestClose(this);" class="suggest_link"><b>Fenster schließen</b></a></p>';
}
}
// Close Function
function suggestClose (div_value) {
document.getElementById('search_suggest').innerHTML = '';
document.getElementById('search_suggest').style.visibility = "hidden";
}
//Mouse over function
function suggestOver(div_value) {
div_value.className = 'suggest_link_over';
}
//Mouse out function
function suggestOut(div_value) {
div_value.className = 'suggest_link';
}
//Click function
function setSearch(value) {
// HTML-TAGS entfernen
var newvalue = value.replace(/<.*?>/gi, '');
//Kategorienamen entfernen (fängt mit an)
var Suche = newvalue.indexOf(" ");
var produktname = newvalue.substring(0,Suche);
document.getElementById('txtSearch').value = produktname;
document.getElementById('search_suggest').innerHTML = '';
document.getElementById('search_suggest').style.visibility = "hidden";
//zum Suchergebnis weiterleiten
top.location.href = document.location.protocol + '//' + window.location.host + "/xtcommerce/advanced_search_result.php?keywords=" + produktname;
}
/*-------------------------End Suggest Code--------------------------------*/
Liegt es vielleicht daran, dass im Code was falsch ist? Hab es original von xtc-load.de übernommen.
Ach ich hab meinen Fehler gefunden:
Wenn ich den unteren Teil durch folgenden Teil ersetzt funzt es wunderbar. Naja, ich hab trotzdem nicht verstanden, warum so das so ist.
function setSearch(value) {
// Schneiden, HTML-TAGS entfernen, unescapen
var produktname = value.substring(0,value.toLowerCase().indexOf("</div>"));
produktname = unescape(produktname.replace(/<.*?>/gi, ''));
document.getElementById('txtSearch').value = produktname;
document.getElementById('search_suggest').innerHTML = '';
document.getElementById('search_suggest').style.visibility = "hidden";
//zum Suchergebnis weiterleiten
top.location.href = document.location.protocol + '//' + window.location.host + "/xtcommerce/advanced_search_result.php?keywords=" + produktname;
}