Я начну с того, что дам вам код, над которым я работаю, чтобы вы могли следовать тому, что я говорю (извините за французский, я понимаю, что вы все не говорите по-французски, но я делаю это сайт для франкоязычной школы). Я отредактировал то, что, по моему мнению, не является частью проблемы (фактический файл имеет длину 757 строк!)
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>
Несмотря на то, что все лишние дополнения выглядят не так уж и много, эта часть страницы отображает фотографии, основанные на наборе критериев. Эти критерии выбираются через переменную php $ _GET, поэтому, если я хочу показать все фотографии, которые принадлежат мне (Shawn Freyssonnet-Inder) и которые были сделаны во Франции, я использую следующую ссылку:
<a href="photos.php?nom=Shawn+Freyssonnet-Inder&pays=France" ...>link</a>
Затем эта страница получает все фотографии, за которые nom = Shawn Freyssonnet-Inder и платит = Франция в базе данных mysql. Кроме того, он показывает пользователю список критериев, используемых для фильтрации результатов, позволяя ему (ей) выделить критерий, удалить критерий и т. Д.
примечание: Пробел заменяется знаком плюс (+) с функцией php urlencode . Я удаляю знак плюс, используя urldecode , прежде чем показывать текст на странице, чтобы убедиться, что у пользователя есть подходящая для человека версия строки. Теперь, когда я вызываю функцию removeCriterion , я использую ту же строку urlencode d в качестве аргумента, поэтому я считаю, что для javascript не должно быть проблем с поиском текста в URL.
Моя проблема возникает при попытке удалить критерий. Как вы можете видеть, я удаляю критерии с помощью функции javascript removeCriterion , которая просто находит определение критерия в URL и удаляет его (найти и заменить). Но по некоторым причинам, по определенным критериям, он не работает, например, «Shawn Freyssonnet-Inder» или другие строки с пробелами.
Кто-нибудь из вас знает, почему javascript не может найти и заменить строки, содержащие пробелы в URL-адресе?