Polymer使用post方法将数组发送到服务器

时间:2014-08-20 01:28:11

标签: javascript arrays post polymer web-component

我想将一些int数组发送到服务器,但我现在还没有意识到这一点。我尝试使用core-ajax,我也知道聚合物-ajax,但它被弃用了。

我做了类似的事情:

<template>
    <paper-fab on-tap="{{sendMethod}}"></paper-fab>
    <core-ajax id="post_ajax" 
      ...some attr...
      body={"some_array":"{{some_array}}"} 
    >
    </core-ajax>
</template>
<script>
        Polymer('el-name',{
            ready: function(){
                this.some_array = [];
            },
            sendMethod: function(){

                this.$.post_ajax.go();
            },
            someMeth: function(){
                this.some_array = data;
            }

        });
</script>

但数据并不丰富服务器。当我看起来调试时,我看到在体内没有检测到该数组,但我尝试只获得一个值:

body={"some_array":"{{some_array[0]}}"} 
检测到

值,但服务器没有获得值。

我看到我不使用表格,但似乎不需要那里或我错了。

更新

经过一些测试,我发现了一些有趣的东西。如果我使用BODY数据不是丰富的服务器,但如果我使用PARAMS数据则是丰富的服务器。它适用于简单的数值,但是当我尝试发送数组时,core-ajax会在日志中显示错误消息。它说params不理解简单的数组。我认为数组需要转换为json。我尝试使用stringfy但它不起作用。可能是我做错了什么?我有数组包含简单的数字。我的服务器端也使用PHP。

2 个答案:

答案 0 :(得分:0)

尝试JSON.stringify(obj)到正文内容。

<core-ajax id="ajax" 
    method="POST"
    contentType='application/json'
    url="..."
    body='{{ajaxbody}}'
    handleAs="json" response="{{resp}}">
    </core-ajax>
....
  Polymer('x-elem', {
    ajaxbody:'',
    pobj:{foo:100,data:{x:200,y:120}},
    sendMethod: function(){
       this.ajaxbody = JSON.stringify(this.pobj);
       this.$.ajax.go();
    }
});

jsbin示例http://jsbin.com/vojuz/

答案 1 :(得分:0)

如果数据显示在chrome dev控制台(或任何开发控制台)的请求主体中,则您的错误是服务器端。如果使用php,您可以使用此命令捕获请求正文。

 <?php $request_body = file_get_contents('php://input'); ?>

如果使用其他语言,我无法帮助你。我有一个问题,即创建聚合物表单并将数据发送到数据库进行存储。这个帖子也许会帮到你。 polymer form using paper-input and core-ajax