web-dev-qa-db-ja.com

Polymer 1.0 Iron-Ajax

Polymer 0.5で動作するphpスクリプトを介してデータを取得しようとしています。Polymer 1.0でエラーが発生せず、null応答が返されます。以下はコードです。 。PHPを変更して何かをエコーし​​ようとしましたが、応答がありません。hresponseは起動しますが、その時点では要求情報のみがajaxにあり、応答情報はnullです。例が見つかりません。私がどこを間違えたかを見るために

<iron-ajax
        id="ajax"
        url=""
        params=""
        handle-as="json"
        on-response="hresponse"
        debounce-duration="300">
</iron-ajax>

and the script

setajax:  function(){
   this.$.ajax.url = "Scripts/getnotes.php";
   this.$.ajax.params='{"SN":"VBA056"}';
   this.$.ajax.generateRequest();
}

hresponse: function(e) {
      console.log(e.detail.response);
      console.log(this.$.ajax.lastResponse);
}
8
user2148935

スクリプト内にthis.$.ajax.params=を追加する場合、それはオブジェクトである必要があります。リクエストが生成されるiron-ajax.html内の場所を調べると、これが当てはまる理由がわかります。現在、文字列として追加しています。行をthis.$.ajax.params={"SN":"VBA056"}に設定してみてください。そうすれば、機能するはずです。

次の例は機能します(必要なすべての要素をインポートしていると仮定します)。

<body>
<my-app></my-app>
<dom-module id="my-app">
<style>
</style>
<template>

  <iron-ajax
      id="ajax"
      url=""
      handle-as="json"
      on-response="hresponse"
      debounce-duration="300">
  </iron-ajax>

  <button on-click="setajax">Click me</button>

</template>
<script>
Polymer({
  is: "my-app",
  setajax: function () {
    this.$.ajax.url = "http://jsonplaceholder.typicode.com/posts";
    this.$.ajax.params = {"userId":"1"};
    this.$.ajax.generateRequest();
  },
  hresponse: function(request) {
    console.log(request.detail.response);
    console.log(this.$.ajax.lastResponse);
  }
});
</script>
</dom-module>
</body>
25
Erik Höhmann

私の初めての回答とプログラミングの初心者なので、完全には正しくありません。しかし、それはあなたを助けることができます

on-responseで提供されているドキュメントによると、https://elements.polymer-project.org/elements/iron-ajaxのようなプロパティはありません。

あなたのiron-ajaxを変更する必要があります。私も初心者なので、うまくいくかどうか疑問に思いますが、試してみる価値はあります。

<iron-ajax
        auto
        url=""
        params=""
        handleAs="json"
        lastResponse="hresponse"
        method='GET'>
</iron-ajax>

また、スクリプトがそのように機能するかどうかも疑問です。

0
Jenish J