web-dev-qa-db-ja.com

Iron Ajax-応答機能から応答にアクセスする方法は?

私はこの要素を持っています:

<template>
...
<iron-ajax 
   id="ajax" 
   url="..." 
   handle-as="json" 
   verbose=true 
   last-response={{ajaxResponse}} 
   loading="{{cargando}}"
   on-response="_handleResponse"> 
</iron-ajax>

<div id="resultado"></div>
</template>

<script>
    Polymer({
        ...

        _handleResponse: function(event){
            console.log("_handleResponse... ");
            // this.$.resultado.innerHTML = event.detail.innerHTML;
        }
    });
</script>

Firebugで見た応答は次のとおりです。

<p>Hello Word</p>

innerHTMLdivのresultadoとして設定するために、_handleResponse関数の応答にアクセスしたいのですが、何も機能しません。

私が試してみました:

オンレスポンス関数でe.detail.response値をデバッグおよび監視する場合:

e.detail.response is null

[ネットワーク]タブで、応答を確認できます(単純な 'hello'):

Response in network tab

6
Jaime

応答データは、実際には _event.detail.response_ イベントの_<iron-ajax>.response_で返されます。設定を誤ったため、responseフィールドはnullになります _<iron-ajax>.handleAs_jsonに設定すると、_Accept-Type_ヘッダーは_application/json_に設定され、応答はすべて JSON.parse() で解析されます。サーバーが_Accept-Type_を無視し、必要なものを送信すると、_<iron-request>_は応答をJSONとして解析しようとして失敗し、 null応答本文 を発生させます。 仕様helloと_<p>Hello</p>_は有効なJSON文字列ではないことに注意してください。

プレーンテキストデータを受信する場合は、_<iron-ajax>.handleAs_をtextに設定します(デフォルトはjsonです)。

_<iron-ajax handle-as="text">_のデモ

_<iron-ajax handle-as="json">_のデモ


リンクした質問 は、_<iron-ajax>.error_イベントとは異なるイベントの詳細を持つ_<iron-ajax>.response_イベントについて質問します。

_<iron-ajax>_がサーバー応答を受信すると、 responseイベントを発生させます 対応する _<iron-request>_ をイベントの詳細として使用します。

何らかの理由でリクエストが失敗した場合、_<iron-ajax>_ errorイベントを発生させますオブジェクトrequest属性を介した_iron-request_と、errorを介した根本的なエラーを含む)をイベントの詳細として。

19
tony19