0

わかりました、ここに問題があります。私はjsonを返すAPIを持っています。成功すると、いくつかの値を含む素敵なリストが返されます。エラーが発生すると、エラーに関するいくつかの情報を含む json が返されます。まだAPIをデプロイする必要があるため、「成功」のケースはまだ試していませんが、うまくいくはずです。今のところ問題は「エラー」の場合です。エラーの場合に $.ajax を使用すると、3 つのパラメーター、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 が言ったように、(少なくとも) 2 つのオプションがあります。

  • 応答にエラー コードを設定すると、error呼び出されます。この場合、応答コンテンツのデータ型は通常は処理されないため、解析されずに変数に入れられdataます。ただし、応答テキストにアクセスして、自分自身jqXHR.responseTextを解析することはできJSONます ( .parseJSON() )。

  • 200適切なコンテンツを含む応答を返しJSONます。これは、オブジェクトに自動的に解析されdataます (dataTypeが に設定されている場合json)。次に、 を確認if(data.error) {...}してエラー メッセージを取得し、それをユーザーに提示できます。

私は 2 番目のオプションを選択しますが、予想されるエラーによって異なります。

于 2012-07-05T19:48:26.477 に答える