2012-02-27 73 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... 
    } 
);