如果有一個網站在每個頁面上都有一個按鈕,在每一頁上PHP更新腳本不會執行任何操作並且不會拋出錯誤
<?php
session_start();
require '../PDOconnection.php';
if (!isset($_SESSION['uID'])) {
$_SESSION['interPageMessage'] = "You need to login to view this page";
header("location: ../login.php");
die();
}
$query = $DBH->prepare("UPDATE notifications SET readStatus = 'true' WHERE uID = ? ORDER BY readStatus DESC LIMIT 10");
$query->bindparam(1,$_SESSION['uID']);
$query->execute();
?>
現在,這種按預期工作:當用戶點擊該按鈕,它調用一個函數,readAllNotifs
:
function readAllNotifs() {
$('#ticker').fadeTo(0,0);
$.get('scripts/readAllNotifs.php');
}
和這裏的腳本/ readAllNotifs.php。我點擊按鈕,#ticker
消失,我看着我的數據庫,行已經更新。然而,在1個特定頁面上,它不工作...我不知道爲什麼...我不知道爲什麼...我不知道爲什麼...
當我點擊按鈕,#ticker
消失(所以我知道函數被調用)..然後我檢查它不工作的原因是否我正在討論的文件位於不同的目錄中(那麼scripts/readAllNotifs.php將會是錯誤的)。但是,不,它與其他頁面的文件位於同一個目錄中(完美的工作文件)。 因此,我查看了我的(Chrome)開發人員工具,查看了網絡選項卡,當我單擊按鈕時,看不到發送到該頁面的請求。我認爲這很奇怪,所以我檢查了其中的這個工作完美的其他文件,但即使在那裏,網絡標籤不顯示調用readAllNotifs.php,但它仍然有效。 那麼,我切換到控制檯,右鍵單擊並選擇Log XMLHttpRequests ...現在,當我單擊按鈕,我可以看到: XHR finished loading: "http://localhost/trunk/scripts/readAllNotifs.php".
但仍然檢查我的數據庫。不用找了。
於是我又試了一次,我改變了最後一行的PHP文件從這個
$query->execute();
要這樣:
$query->execute() or die(var_dump($query->errorinfo()));
然後去網站上的所有網頁,有問題包括網頁,我檢查了網絡標籤,仍然沒有記錄調用此頁面。然後我在瀏覽器中直接找到腳本/ readAllNotifs.php。它加載了一個空白頁(成功!)我檢查了數據庫,是的,值得到了更新。
現在什麼沒有意義的是,如果PHP文件完美工作,如果函數調用完美,SQL語法是完美的,PDO執行不會輸出錯誤,如果頁面在右側目錄中,如果同一目錄中的其他文件可以完美地執行此操作......那麼爲什麼不能這個頁面呢?
P.S.涉及的Javascript保存在外部.js文件中,並使用腳本標記鏈接到網站上的每個頁面。此外,此腳本標籤進入頁面上的所有其他腳本標記之前(除用於包括的jquery.js一)
如果我正確讀取它,結果是在服務器端,一切工作正常,沒有錯誤。我能想到的唯一事情就是具有問題的特定頁面不會正確設置uID。回顯uID來檢查它? –
你檢查了你的錯誤日誌嗎? –
如果您通過ajax調用它,標頭位置調用不會將用戶轉發到登錄頁面。 –