我正在使用WAMP堆棧,並將我在線上找到的代碼中的自定義路由功能拼湊在一起。這個想法是允許用戶將他們(或任何)用戶名添加到網站根URL的末尾,路由器(index.php)將提取該用戶名並提供定製的主頁。一切工作正常在Firefox中,但在谷歌瀏覽器路由似乎搞亂瀏覽器中的JavaScript函數調用。因此,html元素onclick=someFunction()
在錯誤的URL處查找someFunction()
。使用PHP自定義URI路由 - 使用onclick javascript調用
因此,例如,說用戶瀏覽到我的網站,並將他們的用戶名附加到URL,如 - www.example.com/@bruce
。路由功能(參見下面的index.php)重定向到www.example.com/somePage.php?q=bruce
。爲Bruce定製的頁面已經發布,但是當Bruce點擊一個含有onclick
事件的元素時,Chrome會拋出一個錯誤:Uncaught TypeError: someFunction() is not a function at HTMLInputElement.onclick (VM509 [email protected]:44)
任何想法如何解決此問題,以便我仍然可以路由我的用戶?
的index.php:
<?php
//Router
$uri = $_SERVER['REQUEST_URI'];
$user = "";
if(strpos($uri, "@") > 0) {
$user = substr($uri, strpos($uri, "@"));
}
//do a validation on the user name before redirecting
header('Location: somePage.php?q=' . $user); //hardcode url here on deployment
die();
?>
這是我的.htaccess文件,如果是相關的(我複製從PHP路由一個計算器答案pasta'd此):
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule^index.php [QSA,L]
編輯補充腳本路徑在我的somePage.php萬一是導致問題的情況下:
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>SomePage</title>
<link rel="stylesheet" href="./somePage.css">
<script src="./somePage.js"></script>
</head>
首先,您的網址之間似乎存在一些差異。在這裏的問題是'q = bruce',但是在錯誤中它是'q = @ bruce'。 – Mouser
然而這些問題似乎是彼此無關的,這是我的猜測。我認爲重定向頁面沒有加載包含'someFunction'的JS文件' – Mouser
嗯,我沒有注意到這種差異。 substr函數不能像我所期望的那樣工作。 – erv