2012-02-27 70 views
2

我通過AJAX運行下面的PHP腳本,需要一些錯誤管理整合到它:jQuery ajax成功條件..?

$exists = file_exists('../temp/' . $email . '/index.html'); 
if($exists) { 
    echo "ERROR!!!"; 
} else { 
    createUserDirectory($email); 
} 

在AJAX成功的功能,我怎麼能確定腳本是否成功運行或產生錯誤?

如果它返回OK,我現在想要執行重定向,但如果出現錯誤,我想將錯誤添加到文檔中的DIV(而不是重定向當然... )。

$.ajax({ 
      type: "POST", 
      url: 'generate/build.php', 
      data: $("#generateStart").serialize(), // serializes the form's elements. 
      success: function(data) 
      { 
       window.location.href="generate-site.php?user=" + data.replace(/^ +/,"") + ""; // Redirect to publish.php and remove any spaces from the URL (bug fix). 
      } 
     }); 

謝謝。

+0

你能不能檢查'data'的內容是什麼?你也可以將結果作爲json返回,並且包含一個'status'屬性(比如:「ok」/「error」)或'error'屬性(只有在出現錯誤時),然後檢查它們。 – ori 2012-02-27 18:08:59

+0

@ori - 這似乎是一種理想的方法。你可能會把這個問題放在一個答案中,提供一些關於如何將結果作爲JSON返回的指導,然後在成功處理程序中訪問它,然後我可以接受它。謝謝。 – tctc91 2012-02-27 18:12:18

+0

我會,但我認爲@ wsanville的答案更好。爲什麼不使用http狀態碼? – ori 2012-02-27 18:15:21

回答

0

在您的success處理程序中,檢查if(data == 'ERROR!!!')

+0

我想這樣做,但「錯誤!!!」只是暫時的,實際的錯誤會比這個意義要長得多,事情會變得有點草率。 – tctc91 2012-02-27 18:10:48

0

您可能想要添加兩個部分:$ .ajax函數的錯誤回調,以查看請求是否在網絡上失敗,然後檢查返回值以查看服務器驗證是否失敗(如果文件存在於這種情況下)。

例子:

$.ajax({ 
    ... 
    success : function(data) { 
     if(data && data != "ERROR!!!") { 
      //redirect 
     } 
    }, 
    error: function(jqXHR, textStatus, errorThrown) { 
     //Log error, display feedback to user, etc... 
    } 
);