0

好的,这就是问题所在。我有一个 api,它会给我一个 json。成功后,我将返回一个包含一些值的漂亮列表,如果出现错误,我将收到一个包含有关该错误的信息的 json。我还没有尝试过“成功”的案例,因为我仍然需要部署 api,但我认为应该可以。现在的问题是“错误”情况。在出现错误的情况下使用 $.ajax 我将收到三个参数,一个 xhrequest(或类似的),一条消息,我不记得了。我该如何处理?在响应正文中应该是一个 json,我在哪里可以找到它?

感谢您的帮助,抱歉没有代码或缩进​​不佳,但我是用手机写的!

4

3 回答 3

1

当无法从服务器获得响应(如 404 错误等)时,将调用错误回调。如果你想传回你自己的错误,你需要把它们放在 JSON 响应中,并在你的成功回调中测试它们。

例如,在我现在正在处理的成功回调中:

    jQuery.ajax({
        'url':      'Client/saveClient.mas',
        'dataType': 'json',
        'data':     {
            'first_name'            :   first_name,
            'middle_initials'       :   middle_initials,
            'last_name'             :   last_name,
            'phone_number'          :   phone_number
            },
        'success':  saveClientSuccessCallback,
        'error':  saveClientFailureCallback
    });
  }
}

function saveClientSuccessCallback(json)
{
  if (json.status == 'error')
  {
    updateClientTips(json.error_msg);
  }
  else
  {
    addReadOnlyClient(json.people.values, json.manager_uperson_id);

    jQuery('#new-client-form').dialog("close");
  }
}
function saveClientFailureCallback(jqXHR, textStatus, errorThrown)
{
  updateClientTips(textStatus + ': ' + errorThrown);
}

如您所见,我在 json.status 中返回错误条件,在 json.error_msg 中返回消息。

于 2012-07-05T19:37:01.770 回答
0

响应的实际正文应该在jqxhr.responseText

于 2012-07-05T19:34:40.570 回答
0

正如 Paul Tomblin 所说,您有(至少)两种选择:

  • 为您的响应设置错误代码会导致error被调用。在这种情况下,响应内容的数据类型通常是无用的,因此不会对其进行解析并放入data变量中。但是您可以通过访问响应文本jqXHR.responseText并自己解析JSON.parseJSON())。

  • 返回200具有适当JSON内容的响应,该响应会自动解析为data对象(如果dataType设置为json)。然后,您可以检查if(data.error) {...}、获取错误消息并将其呈现给用户。

我会选择第二个选项,但这取决于您期望的错误。

于 2012-07-05T19:48:26.477 回答