2012-01-09 21 views
2

我正在用JQuery和PHP構建ajax表單。 PHP文件驗證提交的數據併發回json編碼的消息。然而,如果JavaScript是關閉狀態,消息如下所示:PHP - 顯示Json編碼的消息

{"error":true,"msg":"- Please enter your name!"} 

使用什麼方法,如果JavaScript並不是在瀏覽器中啓用只顯示消息?

這是PHP函數我目前使用的將消息發回的JQuery:

function mcResponseMessage($mcRespBool, $mcRespMessage){ 
    $mcReturn['error'] = $mcRespBool; 
    $mcReturn['msg'] = '- '.$mcRespMessage; 
    echo json_encode($mcReturn); 
    exit(); 

}

謝謝!

+4

2012年沒有人關心沒有javascript的用戶 – zerkms 2012-01-09 22:02:20

+0

您可以使用javascript將參數添加到ajax url。所以如果該參數不存在,您將提供一個頁面而不是json代碼 – Ibu 2012-01-09 22:05:35

+1

如果JavaScript未啓用,則首先不會有AJAX請求提交數據。 – Mchl 2012-01-09 22:07:39

回答

1

您可以將標誌您的AJAX請求,應該說它是一個AJAX請求,因此您可以輸出JSON的AJAX請求,並只輸出消息時的形式通常是提交:

$.ajax({ 
    data : { ajax : true } 
    ...the rest of your AJAX code here 
}); 

然後在你的PHP腳本:

if (isset($_GET['ajax']) && $_GET['ajax'] == true) { 
    echo json_encode(array('error' => true, 'msg' => '- Please enter your name!')); 
} else { 
    echo '- Please enter your name!'; 
} 

請注意,如果您使用的是post型AJAX調用那麼PHP將需要改變,以引用的事實:$_POST['ajax'],而不是$_GET['ajax']

+0

謝謝!你是唯一瞭解我的問題的人,這正是我所尋找的解決方案。 – user1002039 2012-01-09 22:13:45

0

如果JavaScript未啓用,那麼您的jQuery調用將不會執行。你的應用程序將會死機。我建議在頁面加載時檢查JS,這會讓你知道你是否可以使用你的jQuery函數,或者你是否需要去發佈帖子。

1

如果Javascript被禁用,那麼您完全可以使用JSON響應來做任何事情。如果你想支持禁用腳本的用戶,那麼你必須以更好的方式編排事物:

  1. 當你提交表單時,將表單發送到服務器;服務器應驗證輸入並重定向到「成功」頁面,或者如果出現錯誤(即使用PRG pattern),則返回到同一頁面。在重定向之前,請在會話變量中保存任何驗證錯誤,以便在重定向後顯示它們。這是非支持JS的客戶端如何與您的網站進行交互的方式; 服務器將永遠不會在此模式下返回JSON
  2. 添加防止表單被提交的Javascript,並向服務器發送AJAX請求以驗證數據。實際上,您現在已經爲支持腳本的用戶劫持了該進程。服務器應該運行與上面相同的驗證代碼,但是這次您應該檢測到它是一個AJAX請求(例如,通過使用一些特殊的HTTP頭或請求變量),而不是將錯誤保存到會話變量和重定向,您應該將它們轉換轉換成JSON格式並返回它們。
  3. 驗證AJAX返回時,處理響應並相應地執行。
+0

Json編碼的響應由php發回。 – user1002039 2012-01-09 22:12:48

+0

@ user1002039:將代碼更改爲按上述方式工作,或者接受您的網站在沒有Javascript的情況下無法正常工作。沒有第三種選擇。 – Jon 2012-01-09 22:14:19

+0

對不起喬恩,表單工作得很好沒有JavaScript。如果JavaScript未啓用,表單只會以常規形式提交。這個解決方案由Jasper在下面提供...... – user1002039 2012-01-09 22:17:52