2012-07-05 66 views
0

好的,问题来了。 我有一个API会让我回到一个JSON。如果成功,我会返回一个包含一些值的好列表,并且出现错误,我将收到一个包含关于错误的sone信息的json。 我还没有尝试过“成功”的情况,因为我仍然需要部署api,但我认为应该可以工作。现在的问题是“错误”的情况。 在发生错误时使用$ .ajax我将接收三个参数,一个xhrequest(或类似的),一条消息,但我不记得..我该如何处理?在响应体中,是一个json,我可以在哪里找到它?

感谢您的任何帮助,对于没有代码或可怜indentantion对不起,但我从我的手机写!

+2

如果您的API在返回“错误”(4xx)响应正文中涉嫌有用的内容,则其设计错误 – Alnitak 2012-07-05 19:31:18

+0

设置的错误代码为500. – Enrichman 2012-07-05 19:35:22

+0

我休息我的情况--5xx错误代码应该与_server_错误(例如缺少资源等),而不适用于应用程序层错误。 – Alnitak 2012-07-05 19:40:09

回答

0

响应的实际机构应在jqxhr.responseText

+0

谢谢,我会尽快检查并通知您。 – Enrichman 2012-07-05 19:37:03

+0

嗯..有东西,我不明白..如果我使用responseText我什么都看不到。还调试我可以看到responseText是“”(空)。但是,如果我只是转到我正在使用的网址,我可以清楚地看到回复。任何帮助? – Enrichman 2012-07-05 20:45:53

+0

我刚刚发现在运行本地服务器时出现了Chrome问题......疯狂......谢谢btw。 – Enrichman 2012-07-05 21:06:03

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消息。

+0

这看起来与我们正在做的类似。谢谢。 – Enrichman 2012-07-05 19:39:11

0

正如保罗汤布林说,你有(至少)两个选项:

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

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

我会去第二个选项,但它取决于你期待哪些错误。