2015-06-20 84 views
2
<dom-module id="my-new-app"> 
<style> 
</style> 
<template> 

    <iron-ajax 
     id="ajax" 
     handle-as="json" 
     content-type="application/json" 
     method="POST" 
     body={"user":2,"dob":"2015-06-10","jobs":1,"skills":[],"about":"cool"} 
     on-response="hresponse" 
     debounce-duration="3000"> 
    </iron-ajax> 
    <button on-click="setajax">Click me</button> 
</template> 
<script> 
Polymer({ 
    is: "my-new-app", 
    setajax: function() { 

     this.$.ajax.url="http://127.0.0.1:8000/users/"; 
    this.$.ajax.generateRequest(); 
    }, 
    hresponse: function(request) { 
    console.log(request.detail.response); 
    console.log(this.$.ajax.lastResponse); 
    console.log(this.$.ajax.params); 
    } 
}); 
</script> 
</dom-module> 

這不會正確發佈數據到服務器。另外,當我把iron-ajax.html文件放在console.log中時,我發現contentType仍然設置爲application/x-www-form-urlencoded。該文件說明我們可以通過指定contentType = {String}來指定內容類型。聚合物1.0鐵阿賈克斯不發佈數據

回答

0

在0.5我知道核心ajax總是有一個問題沒有正確發送正文對象。我一直在使用的工作是對身體進行串聯。

setajax: function(){ 
    ajax.body = JSON.stringify({ 
     "user": 2, 
     "dob": "2015-06-10", 
     "jobs": 1, 
     "skills": [], 
     "about": "cool" 
    }) 
    ajax.generateRequest() 
    } 
+0

我試圖用聚合物1.0工作。我已經嘗試使用stringify。我寫的調試腳本在contentType中沒有顯示任何改變。 – ahumblenerd

0

鐵AJAX身體使用原始數據,因此,如果你願意,你可以使用在內部使用的相同功能的鐵AJAX的參數生成POST查詢字符串參數是這樣的:

var Util = { 
    getQueryString: function (params) { 
     var queryParts = []; 
     var param; 
     var value; 

     for (param in params) { 
      value = params[param]; 
      param = window.encodeURIComponent(param); 

      if (value !== null) { 
       param += '=' + window.encodeURIComponent(value); 
      } 

      queryParts.push(param); 
     } 

     return queryParts.join('&'); 
    } 
}; 

,然後你可以使用它像這樣:

this.$.ajax.body = Util.getQueryString({ 
     "user": 2, 
     "dob": "2015-06-10", 
     "jobs": 1, 
     "skills": [], 
     "about": "cool" 
    }); 

你也可以使用計算性能,並生成該查詢字符串

0

您設置body屬性的方式不正確。

body={"user":2,"dob":"2015-06-10","jobs":1,"skills":[],"about":"cool"} 

這不是有效的聚合物數據綁定表達式。

你應該在你的元素的屬性,並使用正確的綁定表達式,如:

body="{{myBodyProperty}}" 

... 
properties:{ 
myBodyProperty:{ 
    type:Object, 
    value:{foo:"bar"} 
} 
} 

如果設置正確的內容類型,然後身體將被正確發送爲JSON。

2

你的方法實際上爲我工作。

但是,body屬性必須用引號引起來(因爲所有屬性都應該)。

您可以嘗試在你的情況下,使用單引號:

<iron-ajax 
    id="ajax" 
    handle-as="json" 
    content-type="application/json" 
    method="POST" 
    body='{"user":2,"dob":"2015-06-10","jobs":1,"skills":[],"about":"cool"}' 
    on-response="hresponse" 
    debounce-duration="3000">