卡在条件重定向循环中

时间:2019-09-10 12:48:25

标签: javascript oracle-apex

如果参数在页面初始加载时与项目值不匹配,我希望应用程序在浏览器中更改url以设置参数。

我试图创建一个条件检查,以查看子字符串是否与URL中的任何位置匹配。但是,我陷入了一个循环。某些信息告诉我我对通配符的使用不正确。

  htp.p('<script>
  if(window.location.href !== "*'||:P4_TEAM||'*") {
  window.location.href = "https://apextserverurl/ords/f?p=80001:4:::::P4_TEAM:'||:P4_TEAM||'"
  }
  </script>');

由于页面项不能为空,因此考虑初始加载,它将把参数推送到URL中并进行相应调整。实际结果显示url参数已正确加载到浏览器中,但似乎未能对javascript进行逻辑测试,而是保持刷新状态

1 个答案:

答案 0 :(得分:2)

您的页面会无休止地刷新,因为您的if条件始终为真(因为您无法在JavaScript中使用通配符……至少不是那样),并且window.location.href将重新加载您的页面。

您可以使用正则表达式,但是对于您的示例而言,简单的string.includes()就足够了。

您可以像这样用includes()进行检查:

// If ':P4_TEAM' is not in the url
if(!window.location.href.includes(':P4_TEAM')) {
  // Set the url to the provided string (and refresh the page)
  window.location.href = "https://apextserverurl/ords/f?p=80001:4:::::P4_TEAM:'||:P4_TEAM||'";
}