2015-07-03 67 views
2

我正在使用Polymer的铁形式组件来提交我创建的这个表单,但问题是来自php脚本的响应不会输出到实际的html。我被困在如何做到这一点,并尝试了许多不同的事情。我究竟做错了什么?这里是我的scrpits:聚合物铁形式的响应

<dom-module id="user-signup"> 
    <template> 
     <form is="iron-form" id="formGet" method="post" action="/core/register.php"> 
     <paper-input char-counter autoValidate="true" error-message="{{item.error_name}}" label="Username" maxlength="25" required name="username"></paper-input> 
     <paper-input char-counter error-message="{{error_displayn}}" label="Display Name" maxlength="35" required name="displayname"></paper-input> 
     <paper-input char-counter error-message="{{error_password}}" label="Password" maxlength="25" required type="password" name="password"></paper-input> 
     <paper-input char-counter error-message="{{error_password}}" label="Confrim Password" maxlength="25" required type="password" name="cfmpassword"></paper-input> 
     <gold-email-input class="paper-input-input" label="Email" required name="email" auto-validate error-message="{{error_email}}"></gold-email-input> 

     <br /> 

     <br> 

     <paper-button raised onclick="clickHandler(event)"><iron-icon icon="check"></iron-icon>Submit</paper-button> 
    </form> 

</template> 

<script> 

    function clickHandler(event) { 
     Polymer.dom(event).localTarget.parentElement.submit();   
    } 

    Polymer({ 
     is: 'user-signup', 
     properties: { 
      error_name: { 
       type: String, 
       value:"Username Is Invalid!" 
      }, 
      error_displayn: { 
       type: String, 
       value:"Display Name Is Invalid!" 
      }, 
      error_password: { 
       type: String, 
       value:"Password Is Invalid!" 
      }, 
      error_email: { 
       type: String, 
       value:"Email Is Invalid!" 
      } 
     }, 

     listeners: { 
      'iron-form-response': 'formResponse', 
      'iron-form-submit': 'formSubmit', 
      'iron-form-error': 'formError' 
     }, 
     formSubmit: function(event) { 
      var pmn = document.querySelector('#waitForResponse'); 
      pmn.setAttribute("opened", "true"); 
      console.log("Form was submitted"); 

     }, 
     formResponse: function(event) { 
      setTimeout(function(){ 
      var pmn = document.querySelector('#waitForResponse'); 
      pmn.removeAttribute("opened"); 
      }, 5000) 
      console.log('There was a response'); 
      var response = event.detail; 
      alert(response);     
     }, 
     formError: function(event) { 
      console.log('Form Error, no actual response'); 
      setTimeout(function(){document.querySelector('#errorToast').show(); 
      var pmn = document.querySelector('#waitForResponse'); 
      pmn.removeAttribute("opened"); 
      }, 5000) 
     } 
    }); 
</script> 
</dom-module> 

现在的侦听器的工作,当有来自PHP页面的响应,警告弹出,但它说:[Object对象。下面是PHP脚本:

<?php 
    $data[] = array(
     "id" => $id, 
     "error_name" => $error_name, 
     "success" => true 
    ); 

    echo 'dd'; 
?> 

我试图呼应$data为JSON,但什么也不能工作。我试图在谷歌和堆栈上搜索它,但没有发现任何东西。我究竟做错了什么?

+0

哪里是实际连接到服务器的XHR请求?接口是否真的把WIRE上的jsonRepose放回客户端。为什么不在curl发布登录和测试之前进入聚合物代码 –

+0

@RobertRowntree当我按下提交时,它会提出请求“/core/register.php?username=h&displayname=h&password=h&cfmpassword=h&email=hjk%40gklj。 com“,响应是[[{”id“:null,”error_name“:”你选择的用户名已经存在。“,”success“:true}]'这里有一对截图[截图1](http ://prntscr.com/7oa7hk)[截图2](http://prntscr.com/7oa7je) – user3339454

+0

响应如图所示不合法json –

回答

4

根据the docs你已经将你的监听器绑定到一个主机元素,而不是形成自己。

也许这将帮助:

listeners: { 
     'formGet.iron-form-response': 'formResponse', 
     'formGet.iron-form-submit': 'formSubmit', 
     'formGet.iron-form-error': 'formError' 
    } 
0

什么模型对象,你的成功的登录调用PHP会返回?

您可以使用以下cosume的JSON回来JS承诺内

$myPhpCallLogon.then(function(user) { 
    user.firstName... 
    user.id... 
    user.email... 

    var polyListUser = document.querySelector('#userView'); 

    set watch vars in polyListUser element.... 
} 

,然后用户模板拿到姓名,ID,电子邮件等成显示用户的元素的DOM。

+0

我将如何去添加此? – user3339454

+1

关于铁形式似乎只有问题,没有答案。任何人都可以确认铁形式是否真的有效?我从来没有见过任何地方的工作案例,没有工作的例子,没有工作文件......只是很多未回答的问题。有人知道应该返回什么吗?我得到的只是HTMLElement - 根本没用。 – Typel