2016-09-24 78 views
1

我是以下代碼中的聚合物1.0的初學者我嘗試從我的php文件獲取json響應,此時Iron-ajax的on-response觸發。我通過編輯php嘗試了不同的響應,但它總是在我的控制檯日誌中顯示爲空。代碼的代碼iron-ajax響應爲php json響應返回null

<iron-ajax 
     id="ajax" 
     method="POST" 
     url="post_tip.php" 
     handle-as="json" 
     on-response="postResponse" 
     > 
    </iron-ajax> 

腳本的一部分來處理響應

postResponse: function(r){ 
      console.log(r.detail.response); 
      if(r.detail.response.success==1){ 
       console.log('Tip posted'); 
      } 
      else{console.log('Error occured.not posted');} 
     } 

我無法找到任何錯誤,但r.detail.response返回null每一次的 ajax的一部分。

在我的PHP我有。

$resp = '{"success":1}'; 
echo $resp; 
echo json_encode($resp); 

無法弄清楚我做錯了哪一部分。對於可能的愚蠢問題感到抱歉。

回答

1

你這樣做在PHP中都是錯誤的。首先json_encode將數組或對象編碼爲json字符串,它將會跳過你的字符串,但那不是你想要的。其次,您不返回[ ]括號,但無法使用JSON.parse進行解析,也不能在javascript中用作JSON Object

你應該發回JSON content-type,因爲響應可能是不上鉤槽JSON.parse,並期待一個真正的JSON,但在鐵的AJAX文檔handle-as="json"手段:

JSON:使用XHR.responseText解析爲JSON。

所以在使用XHR.responseTextJSON.parse元素iron-ajax解析JSON爲對象,這意味着PHP頭不是必需的,但你應該使用。

更改你的PHP代碼是這樣的:

<?php 

    $result = array('success' => 1); 

    header('Content-Type: application/json'); 
    echo json_encode($result); 
+0

感謝很多人:)真正解決我的問題,我學到了不少從答案。 – Burhan