Beste forumleden,

Ik heb een zoekfunctie op mijn website.
Maar sinds ik een ssl certificaat heb werkt de zoekfunctie niet goed meer.
Altans de resultaten verschijnen pas als ik de pagina eenmaal herlaad.
Ik ben een noob op gebied van javascript maar misschien wil iemand van jullie mij helpen.
De javascriptcode heb ik van de volgende website gedownload:
zoekmachine
Alleen werkt het forum op deze site helaas niet meer.

De code ziet er als volgt uit:
z_input.html :


<script language="JavaScript" type="text/javascript">
    veld = null;
    function EnterOpvangen(veld, event) {
    var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
        if (keyCode == 13) {
                if (veld == z_form.elements[0])
                {search_form(z_form)}
                return false;}
        else return true;}     
   </script>
<input id="invoer" type="text" name="d" onkeypress="return EnterOpvangen(this, event)" value=""><br>
<input id="reset" type="reset" value="delete all">
<input id="button" type="button" value="search" name="search button" onClick="search_form(z_form)">


z_form.js :


var results_location = "z_output.php";
function search_form(z_form) {
   if (z_form.d.value.length > 0) {
       document.cookie = "d=" + escape(z_form.d.value);
       window.location = results_location;}}


z_data.js :


var sn = 0;
var s = new Array();

       // VOORBEELD -----------------------------------------------------------------------------------------------------------
s[sn++] =   /* AFBEELDING * /   '<img src="" alt="">^'+
       /* URL * /       '^<!-- leeg -->^'+
       /* ZOEKWOORDEN */       'zoek,woorden';
//hieronder niets wijzigen
var include_num = 0; // resultaten nummeren
var bold = 1; // vet weergeven
var cookies = document.cookie;
var p = cookies.indexOf("d=");
if (p != -1) {
   var st = p + 2;
   var en = cookies.indexOf(";", st);
   if (en == -1) {
       en = cookies.length;}
   var d = cookies.substring(st, en);
   d = unescape(d);}
var od = d;var m = 0;
if (d.charAt(0) == '"' && d.charAt(d.length - 1) == '"') {
   m = 1;}
var r = new Array();
var co = 0;
if (m == 0) {
   var woin = new Array();
   var w = d.split(" ");
   for (var a = 0; a < w.length; a++) {
       woin[a] = 0;
       if (w[a].charAt(0) == '-') {
           woin[a] = 1;}}
   for (var a = 0; a < w.length; a++) {
       w[a] = w[a].replace(/^\-|^\+/gi, "");}
   a = 0;
   for (var c = 0; c < s.length; c++) {
       pa = 0;
       nh = 0;
       for (var i = 0; i < woin.length; i++) {
           if (woin[i] == 0) {
               nh++;
               var pat = new RegExp(w[i], "i");
               var rn = s[c].search(pat);
               if (rn >= 0) {
                   pa++;} else {pa = 0;}}
           if (woin[i] == 1) {
               var pat = new RegExp(w[i], "i");
               var rn = s[c].search(pat);
               if (rn >= 0) {
                   pa = 0;}}}
       if (pa == nh) {
           r[a] = s[c];
           a++;}}
   co = a;}
if (m == 1) {
   d = d.replace(/"/gi, "");
   var a = 0;
   var pat = new RegExp(d, "i");
   for (var c = 0; c < s.length; c++) {
       var rn = s[c].search(pat);
       if (rn >= 0) {
           r[a] = s[c];
           a++;}}
   co = a;}
function return_query() {
   document.z_form.d.value = od;}
function num_jscript() {
   document.write(co);}
function out_jscript() {
   if (co == 0) {
       document.write('<b>Use other keywords or<br>');
       document.write('use more keywords or<br>');
       document.write('use cominations like:<br>');
       document.write('color of file, type of file, topic of file.<br>');
       document.write('and try again</b>');
       return;}
   for (var a = 0; a < r.length; a++) {
       var os = r[a].split("^");
       if (bold == 1 && m == 1) {
           var br = "<b>" + d + "</b>";
           os[2] = os[2].replace(pat, br);}
       if (include_num == 1) {
           document.write(a + 1, '. <a class="result" href="', os[1], '">', os[0], '</a>', os[2]);}
else {document.write('<a class="result" href="', os[1], '">', os[0], '</a>', os[2]);}}}


z_output.html :


<b><i>There were <script language="JavaScript1.3" type="text/javascript">num_jscript()</script> results found!</i></b>
   
<script language="JavaScript1.3" type="text/javascript">out_jscript()</script>



Ik hoop dat iemand mij kan helpen
Oké Rob,
Ik heb de EnterOpvangen() functie weer terug geplaatst.
de regels: 'if (veld == z_form.elements[0])
{search_form(z_form)}'
heb ik niet meer terug geplaatst zoals je zei.
En werkt het nu?
Deze reactie is gewijzigd!

Helaas werkt het nog niet in chrome en edge.
wel in firefox.
Krijg je geen syntax-error? In dat geval is je code gewoon fout.
Aan SSL kan het niet liggen, tenzij je iets via HTTP in zou laden op HTTPS, maar dat lijkt mij niet het geval.

Als ik op 'e' zoek krijg ik eerst een me,ding dat er niks gevonden is, en daarna als ik opnieuw zoek wel. dan lijkt het probleem mij meer in je PHP-script. Maar waarom gebruik je geen GET voor je zoekopdracht? Dat is een stuk gebruikelijker bij zoekopdrachten.
Ik snap er niks meer van.
Het werkt wel in firefox maar niet in ms edge of chrome.
In localhost werkt het wel in alle browsers.


Krijg je geen syntax-error? In dat geval is je code gewoon fout.
Aan SSL kan het niet liggen, tenzij je iets via HTTP in zou laden op HTTPS, maar dat lijkt mij niet het geval.

Als ik op 'e' zoek krijg ik eerst een me,ding dat er niks gevonden is, en daarna als ik opnieuw zoek wel. dan lijkt het probleem mij meer in je PHP-script. Maar waarom gebruik je geen GET voor je zoekopdracht? Dat is een stuk gebruikelijker bij zoekopdrachten


Beste Ariën, ik ben geen programmeur. Ik kan hoogstens een beetje knippen en plakken.
In firefox werkt het nu wel maar het werkt nog niet in ms edge en chrome.
Ik krijg geen syntax error.
Het script waar je heen linkt is een script van vier jaar oud, of misschien wel ouder.
Waarom zou je het niet geheel in PHP oplossen, en hoogstens JavaScript voor een validatie of hulp bij het invullen van het veld.

De vraag is eigenlijk: Hoe en waar wordt er gezocht?
De reden dat ik deze zoekmachine gebruik is dat deze zoekmachine precies naar mijn zin werkt.
Ik kan zelf de pagina's bepalen waar naar gezocht kan worden, ik kan zelf de zoekwoorden bepalen per pagina en ik kan de resultaten met afbeeldingen weergeven.
Zo ziet de data (array) eruit:

var sn = 0;
var s = new Array();
s[sn++] =   /* AFBEELDING * /   '<img src="" alt="">^'+
            /* URL * /       'https://url-naar-pagina-afbeelding-1^<!-- leeg -->^'+
            /* ZOEKWOORDEN */       'zoek,woorden';
s[sn++] =   /* AFBEELDING * /   '<img src="" alt="">^'+
            /* URL * /       'https://url-naar-pagina-afbeelding-2^<!-- leeg -->^'+
            /* ZOEKWOORDEN */       'zoek,woorden';
// etc...

Met behulp van de zoekmachine doorzoekt ie de array en geeft alleen de afbeeldingen weer waar de gezochte zoekwoorden staan.

Ik heb de zoekmachine nu verplaatst naar een andere website waar ik geen ssl certificaat heb. Hier werkt ie wel goed dus het moet iets te maken hebben met het certificaat of https.

Tijdelijke locatie zoekmachine:
zoekmachine
Is het juist niet onhandig dat je steeds je data-array in JavaScript steeds moet aanpassen? Een typfout en je resultaten doen niet meer wat ze moeten doen.

Ik stel toch in op een pad, als het op HTTPS niet werkt.
Maar misschien is het zinvoller om een modernere zoekmachine te maken.

Reageren