2016-09-29 35 views
-2

我已經找了一個答案,但我知道如何實現來自PHP的警報我只是不知道我在做這個特定的一段代碼錯了。
我有這個工作,直到我添加if語句。cant回聲從php的0123警報

if ($errors) { 
     echo "<script type='text/javascript'>"; 
     echo "alert('Records Were Uploaded');"; 
     echo "window.location.href = 'EmployeePicker.php';"; 
     echo "</script>"; 
    } else { 
     echo "<script type='text/javascript'>"; 
     echo "alert('There was a problem with your file');"; 
     echo "window.location.href = 'csvUpload.php';"; 
     echo "</script>"; 
    } 

它剛剛工作的很好。

 echo "<script type='text/javascript'>"; 
     echo "alert('Records Were Uploaded');"; 
     echo "window.location.href = 'EmployeePicker.php';"; 
     echo "</script>"; 

如果評論的一切了,只是做

 echo "<script type='text/javascript'>"; 
     echo "alert('There was a problem with your file');"; 
     echo "window.location.href = 'csvUpload.php';"; 
     echo "</script>"; 

這是不行的。我很困惑。爲什麼第二次警報不起作用沒有意義。

我忘了提,在第一次警報的if語句中,第二次警告是我無法觸發的。

很抱歉,$ error是一個bool。如果這是真的,則上傳一個文件,否則不是。

+1

檢查您的Javascript控制檯是否有錯誤。 – Barmar

+0

我試過你的代碼,它工作正常。問題在別處,或者您沒有正確複製它。 – Barmar

+0

我同意@Barmar你的代碼適合我。除了'$ errors'變量的含糊性(如果爲真 - 表示有/有/錯誤 - 它會讓你到頁面說事情沒問題),一切正常。也許你可以展示'$ errors'變量是如何設置的? –

回答

0

我認爲你正在做與你想要的相反: 你的情況與內部執行的動作不匹配。 也許你應該做的:

if (!$errors) { 
     echo "<script type='text/javascript'>"; 
     echo "alert('Records Were Uploaded');"; 
     echo "window.location.href = 'EmployeePicker.php';"; 
     echo "</script>"; 
    } else { 
     echo "<script type='text/javascript'>"; 
     echo "alert('There was a problem with your file');"; 
     echo "window.location.href = 'csvUpload.php';"; 
     echo "</script>"; 
    } 

而且還可以節省多達上echo話 - 並且使其更具可讀性 - 做這樣做某事:

echo <<<HTML 
<script type='text/javascript'> 
    alert('Records Were Uploaded'); 
    window.location.href = 'EmployeePicker.php'; 
</script> 
HTML; 

只是如果你想:)


[編輯]請注意,根據什麼$errors舉行(無論整數或數組),您可以檢查沒有錯誤!$errors如果int eger或!count($errors) if array。


[編輯]嘗試你的第二個代碼片段作爲獨立

如果你需要追蹤你需要一點隔離位什麼是錯的! 首先嚐試code 1作爲一個新的PHP文件,如果它不警告和重定向您的系統,然後在您的配置中有錯誤。 如果它在您的代碼邏輯中工作有誤, 我也可以通過先設定$errors VAR爲1或0

碼1

<?php 
$errors = 1; 

    echo "<script type='text/javascript'>"; 
    echo "alert('There was a problem with your file');"; 
    echo "window.location.href = 'csvUpload.php';"; 
    echo "</script>"; 

?> 

碼2

<?php 
$errors = 1; 
if ($errors) { 
     echo "<script type='text/javascript'>"; 
     echo "alert('Records Were Uploaded');"; 
     // echo "window.location.href = 'EmployeePicker.php';"; 
     echo "</script>"; 
    } else { 
     echo "<script type='text/javascript'>"; 
     echo "alert('There was a problem with your file');"; 
     // echo "window.location.href = 'csvUpload.php';"; 
     echo "</script>"; 
    } 
?> 

以及您$errors沒有PB運行code 2 var,如果爲true意味着沒有錯誤,你應該將它重命名爲不那麼棘手,比如$uploadSuccessful。 ;)

+0

是的,他有'如果'倒退。但問題是,當他完全取出「if」時,第二塊回聲失敗。所以有一個不同的問題。 – Barmar

+0

@Barmar,自從我們回答後,問題就被編輯了。現在答案可能不準確。我會稍後檢查:) – antoni

+0

編輯只是以「對不起」開頭的行。沒有任何代碼。 – Barmar

0

它應該回聲良好。嘗試檢查你的php錯誤日誌文件,看看有沒有關於這個問題的任何線索。

只是一個最喜歡我的可能的個人喜好,可能會幫助你將邏輯分開一點。請看下面。

<?php 

// STATUS 
$errors = true; 

// OUTPUTS 
$upload_success = "<script type='text/javascript'>"; 
    $upload_success .= "alert('Records Were Uploaded');"; 
    $upload_success .= "window.location.href = 'EmployeePicker.php';"; 
$upload_success .= "</script>"; 

$upload_fail = "<script type='text/javascript'>"; 
    $upload_fail .= "alert('There was a problem with your file');"; 
    $upload_fail .= "window.location.href = 'csvUpload.php';"; 
$upload_fail .= "</script>"; 

//LOGIC 
if ($errors) { 
    echo $upload_success; 
} else { 
    echo $upload_fail; 
} 

?>