2012-02-27 7 views
2

Я бегу следующий скрипт через AJAX и нужно интегрировать некоторые управления ошибок в нем: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

+0

@ori - Это похоже на идеальный метод. Не могли бы вы поместить это в ответ с небольшим руководством относительно того, как вернуть результат как JSON, а затем получить доступ к этому в обработчике успеха, а затем я могу принять его. Благодарю. – tctc91

+0

Я бы, но я думаю, что ответ @ wsanville лучше. Почему бы не использовать коды статуса http? – ori

ответ

0

Внутри вашего обработчика success, проверьте if(data == 'ERROR!!!').

+0

Я думал об этом так, но «ОШИБКА !!!» является временным, и фактические ошибки будут намного длиннее, чем это означает, что вещи будут немного неаккуратными. – tctc91

0

Возможно, вы захотите добавить две части к этому: обратный вызов ошибки в функции $ .ajax, чтобы проверить, не провалился ли запрос в сети, а затем проверить возвращаемое значение, чтобы проверить, не сработала ли проверка сервера (если файл существует в этом случае).

Пример:

$.ajax({ 
    ... 
    success : function(data) { 
     if(data && data != "ERROR!!!") { 
      //redirect 
     } 
    }, 
    error: function(jqXHR, textStatus, errorThrown) { 
     //Log error, display feedback to user, etc... 
    } 
); 
Смежные вопросы