Изменение знака вопроса в моем URL - PullRequest
1 голос
/ 11 июня 2011

Я использую Joomla на этом сайте. У меня есть партнерская программа, которая требует, чтобы я запустил следующий HTML на своей странице:

Заголовок

var bid = ####; var site = #; document.write ( '');

Footer

следующий URL доставлен и не работает (показывает форму электронной почты) http://www.whatshappeningnow.info/index.php/index.php?option=com_content&view=article&id=764?evtid=1626579&event=ZZ+Top

Обратите внимание на "?" между "= 764" и "evtid ="

Если я изменю адрес на:

http://www.whatshappeningnow.info/index.php/index.php?option=com_content&view=article&id=764&evtid=1626579&event=ZZ+Top

Примечание: я заменил "?" с "&"

Теперь отображаются правильные результаты (необходимо отрегулировать css, но билеты отображаются!

Как мне заставить мой URL писать правильно оттуда скрипт, который я не могу изменить.

Ответы [ 2 ]

1 голос
/ 11 июня 2011

Как говорится в одном комментарии, лучше всего связаться с партнерской программой и позволить им исправить это.

В качестве обходного пути вы можете преобразовать URL-адрес, возвращаемый скриптом партнерской программы. Так как в URL только одно "?" разрешено, вы можете разделить URL на подстроки в "?", а затем перестроить его, поставив только "?" между первой и второй подстрокой. Примерно так:

var newUrl = "";
var urlSubs = affiliateUrl.split("?");
if (urlSubs.length === 0) {
   newUrl = affiliateUrl;
   //-- no "?", do your processing here...
} else {
    newUrl = urlSubs[0] + "?";
    var i = 1;
    for (i = 1; i < urlSubs.length; i++) {
       newUrl = newUrl + "&" + urlSubs[i];
    } 
}

Примечание: я не рассматривал проверку ошибок!

Это будет работать для любого числа «?» И будет сохранять только первое.

0 голосов
/ 11 июня 2011

Как указал Пекка, лучше всего заставить их исправить эту ошибку, но в то же время вы можете сделать что-то вроде этого, предполагая, что вы можете получить доступ к возвращаемой строке:

<script>
var str = "http://www.whatshappeningnow.info/index.php/index.php?option=com_content&view=article&id=764?evtid=1626579&event=ZZ+Top";
var newStr = str.replace(/(\?)([^\?]*)(\?)/, "$1$2&");
</script>

Это работает только в том случае, если вы знаете, что строка всегда будет иметь два вопросительных знака, один в правильном месте и один там, где должен быть амперсанд.Он находит подходящую строку с помощью регулярного выражения и просто заменяет 2-е "?"с амперсандом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...