Ich beginne damit, Ihnen den Code zu geben, an dem ich gerade arbeite, damit Sie dem folgen können, was ich sage (Entschuldigung für das Französisch, ich merke, dass Sie alle kein Französisch sprechen, aber ich mache diese Website für eine französischsprachige Schule). Ich habe herausgeschnitten, was ich glaube nicht, ein Teil des Problems ist (die tatsächliche Datei ist 757 Zeilen lang!)Warum kann Javascript keine Zeichenfolgen finden und ersetzen, die Leerzeichen in der URL enthalten?
photos.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Photos</title>
<script type="text/javascript">
function removeCriterion(criterionText)
{
var getData = new RegExp("&" + criterionText + "|\\?" + criterionText + "$|" + criterionText + "&", "gi");
window.location = window.location.toString().replace(getData,"");
}
</script>
</head>
<body>
<a class="retirerCritere" onclick="removeCriterion('Shawn+Freyssonnet-Inder');" title="Réessayer la recherche sans ce critère"><img src="img/deleteButton.png" alt="Retirer" /></a>
</body>
</html>
Obwohl es nicht nach viel aussieht mit all den ausgestellten Extras ist dies Teil einer Seite, auf der Fotos basierend auf einer Reihe von Kriterien angezeigt werden. Diese Kriterien werden geholt durch PHP-Variable $ _GET, also wenn ich alle Fotos zeigen wollen, die mir gehören (Shawn Freyssonnet-Inder) und die wurden in Frankreich genommen, ich benutze den folgenden Link:
<a href="photos.php?nom=Shawn+Freyssonnet-Inder&pays=France" ...>link</a>
Diese Seite holt dann alle Fotos für die nom = Shawn Freyssonnet-Inder und = Frankreich in einer mySQL-Datenbank bezahlt. Darüber hinaus zeigt es dem Benutzer die Liste der Kriterien zum Filtern der Ergebnisse, die es ihm ermöglichen, ein Kriterium zu isolieren, ein Kriterium zu entfernen usw.
Hinweis: Der Speicherplatz wird durch ein Pluszeichen ersetzt (+) mit php funktion urlencode. Ich entferne das Pluszeichen unter Verwendung von urldecode, bevor ich den TXT auf der Seite zeige, und stelle sicher, dass der Benutzer über die entsprechende benutzerfreundliche Version der Zeichenfolge verfügt. Jetzt, wenn ich die removeCriterion Funktion anrufe, benutze ich das gleiche urlencode d Schnur als Argument, also glaube ich, dass es kein Problem für Javascript geben sollte, den Text in der URL zu finden.
Mein Problem tritt auf, wenn versucht wird, ein Kriterium zu entfernen. Wie Sie sehen können, entferne ich Kriterien mit der JavaScript-Funktion removeCriterion, die einfach die Kriteriumdefinition in der URL findet und entfernt (suchen und ersetzen). Aber aus bestimmten Gründen funktioniert es bei bestimmten Kriterien nicht, zB "Shawn Freyssonnet-Inder" oder andere Strings mit Leerzeichen.
Würde jemand von Ihnen wissen, warum Javascript Strings, die Leerzeichen in der URL enthalten, nicht finden und ersetzen kann?
Diese besondere Lösung scheint nicht in meinem Fall zu funktionieren – Shawn
Ok, es funktioniert jetzt, ich hatte JavaScript zu verwenden, um die PHP-Funktion urlencode zu simulieren, damit die Zeichenfolge in der URL gefunden werden kann. (Ich wusste nicht, dass $ _GET automatisch urldecode's ...) Vielen Dank, dass Sie mir geholfen haben, dieses 2 Wochen lange Problem zu lösen: p – Shawn