Polymer 聚合物1.0铁ajax未发布数据 点击我 聚合物({ 是:“我的新应用程序”, setajax:function(){ 这是$.ajax.url=”http://127.0.0.1:8000/users/"; 这是$.ajax.generateRequest(); }, hr响应:功能(请求){ 日志(请求、详细信息、响应); log(this.$.ajax.lastResponse); log(this.$.ajax.params); } });

Polymer 聚合物1.0铁ajax未发布数据 点击我 聚合物({ 是:“我的新应用程序”, setajax:function(){ 这是$.ajax.url=”http://127.0.0.1:8000/users/"; 这是$.ajax.generateRequest(); }, hr响应:功能(请求){ 日志(请求、详细信息、响应); log(this.$.ajax.lastResponse); log(this.$.ajax.params); } });,polymer,Polymer,这不会将数据正确地发布到服务器。另外,当我将console.log放入iron-ajax.html文件中时,我发现contentType仍然设置为application/x-www-form-urlencoded。文档说我们可以通过指定contentType={String}来指定contentype 在0.5版本中,我知道核心ajax始终存在一个问题,即无法正确发送body对象。我一直在使用的工作是将身体绷紧 <dom-module id="my-new-app"> <sty

这不会将数据正确地发布到服务器。另外,当我将console.log放入iron-ajax.html文件中时,我发现contentType仍然设置为
application/x-www-form-urlencoded
。文档说我们可以通过指定
contentType={String}
来指定contentype

在0.5版本中,我知道核心ajax始终存在一个问题,即无法正确发送body对象。我一直在使用的工作是将身体绷紧

<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主体使用原始数据,因此如果需要,可以使用iron ajax内部用于参数的相同函数来生成查询后字符串参数,如下所示:

 setajax: function(){
    ajax.body = JSON.stringify({
        "user": 2,
        "dob": "2015-06-10",
        "jobs": 1,
        "skills": [],
        "about": "cool"
    })
    ajax.generateRequest()
  }
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('&');
    }
};
然后你可以这样使用它:

 setajax: function(){
    ajax.body = JSON.stringify({
        "user": 2,
        "dob": "2015-06-10",
        "jobs": 1,
        "skills": [],
        "about": "cool"
    })
    ajax.generateRequest()
  }
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('&');
    }
};

此外,如果设置body属性的方式不正确,则可以使用computed属性并生成此查询字符串

this.$.ajax.body = Util.getQueryString({
        "user": 2,
        "dob": "2015-06-10",
        "jobs": 1,
        "skills": [],
        "about": "cool"
    });
这不是有效的聚合物数据绑定表达式

元素中应该有一个属性,并使用正确的绑定表达式,如:

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

如果您设置了正确的内容类型,那么正文将正确地作为json发送。

您的方法实际上对我有用

但是,body属性必须用引号括起来(所有属性都应该用引号括起来)

您可以尝试在您的案例中使用单引号:

body="{{myBodyProperty}}"

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


我正在尝试使用polymer 1.0。我已经试过使用stringify了。我编写的调试脚本没有显示contentType中的任何更改。