当状态代码失败时,为什么jQuery不会从ajax脚本中评估响应

时间:2012-05-25 18:06:09

标签: jquery ajax

我有data-type: 'script'的简单ajax请求。

如果响应的状态代码为200,则返回的javascript可以正常执行。如果它是500或403之类的错误代码,则不会执行任何操作。

我已经重读了3次文档:

  

" script":将响应评估为JavaScript并将其作为简单返回   文本。 ...

这并不表示它取决于成功或任何其他条件。

由于我的服务器使用" text / javascript"的响应类型进行响应,我会假设jQuery将处理该内容类型(即评估它),即使它使用' 500'状态代码(即"嘿,我不能做你要求我做的事情")

这是jQuery的问题吗?或者这是预期的行为,文档是不完整的?

1 个答案:

答案 0 :(得分:1)

从版本1.5开始,ajax调用返回一个延迟对象。

所以你可以使用

$.ajax({/*options*/})
  .done(function(data, status, jqxhr){ alert("$.ajax completed!"); })
  .fail(function(jqxhr, settings, exception){ alert("$.ajax failed!"); });

note 在调用.done方法之前,当成功发出请求时,将评估实际脚本