Как перенаправить URL через JavaScript на основе номера (если 1, перенаправить на A; если 2, на B ...) - PullRequest
0 голосов
/ 15 февраля 2020

Я хочу перенаправить посетителя на основе переменной в его URL. Вариант использования - это викторина с Gravity Forms, где пользователь будет перенаправлен на example.com/processing?quizresult= enjn‹

Где n - числовое значение (0-50).

Существует 3 возможных исхода (0-15, 16-30, 31-50).

Я нашел JavaScript для перенаправления в зависимости от того, содержит ли URL переменную, но не диапазон переменных. Есть ли лучший способ, чем 50 «IF» заявлений?

<script>
if(document.location.href.indexOf('1') > -1) { 
    document.location.href = 'http://www.example.com/resultA';
}

if(document.location.href.indexOf('2') > -1) { 
    document.location.href = 'http://www.example.com/resultA';
}

if(document.location.href.indexOf('3') > -1) { 
    document.location.href = 'http://www.example.com/resultA';
}

Ответы [ 2 ]

0 голосов
/ 15 февраля 2020

Привет Ваши решения здесь,

Попробуйте это.

if (document.location.href.indexOf(1) > -1) {
      alert("your url contains the name franky");
    } else if (document.location.href.indexOf(2) > -1) {
      alert("your url contains the name franky");
    } else if (document.location.href.indexOf(3) > -1) {
      alert("your url contains the name franky");
    } else{ alert("not matach any value");}
0 голосов
/ 15 февраля 2020

Попробуйте:

  • Извлечение {n} из строки URL
  • Условное перенаправление в соответствии со значением n

Пример:

// extract {n} from example.com/processing?quizresult={n}
const getParamValue = (url, parameterKey) => {
  const [urlWithoutParameters, parameters = ''] = url.split('?'); // ['example.com/processing', 'quizresult=1']
  const paramsArr = parameters.split('&'); // ['quizresult=1']

  for (let i = 0; i < paramsArr.length; i++) {
    const [k, v] = paramsArr[i].split('='); // k = 'quizresult', v = '1'
    if (k === parameterKey) {
      return v;
    }
  }
};

// conditionally redirect to the result urls.
const conditionallyRedirect = (url) => {
  const quizResult = getParamValue(url, 'quizresult');
  if (quizResult >= 0 && quizResult < 16) {
    console.log('resultA');
    // document.location.href = 'http://www.example.com/resultA';
  } else if (quizResult >= 16 && quizResult < 31) {
    console.log('resultB');
    // document.location.href = 'http://www.example.com/resultB';
  } else if (quizResult >= 31 && quizResult <= 50) {
    console.log('resultC');
    // document.location.href = 'http://www.example.com/resultC';
  }
  // do not redirect otherwise
};


// Examples
conditionallyRedirect('example.com/processing?quizresult=1'); // redirects to resultA
conditionallyRedirect('example.com/processing?quizresult=17&someotherparam=whatever'); // redirects to resultB
conditionallyRedirect('example.com/processing'); // does not redirect
conditionallyRedirect('example.com/processing?quizresult=100'); // does not redirect

Так что это будет работать для вас:

conditionallyRedirect(document.location.href);
...