Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用iron ajax发布json对象作为应用程序/x-www-form-urlencoded_Javascript_Json_Spring Mvc_Polymer - Fatal编程技术网

Javascript 使用iron ajax发布json对象作为应用程序/x-www-form-urlencoded

Javascript 使用iron ajax发布json对象作为应用程序/x-www-form-urlencoded,javascript,json,spring-mvc,polymer,Javascript,Json,Spring Mvc,Polymer,在我基于聚合物的应用程序中,我希望使用花哨的JavaScript模型绑定到输入元素 但是,我希望将模型发布到我的Spring控制器,作为经典的formdata执行,这样我就可以利用Spring SessionAttributes 我将iron ajax设置为: <iron-ajax id="saveMailing" method="POST" url="/api/mailing" content-type="application/x-www-form-urlenc

在我基于聚合物的应用程序中,我希望使用花哨的JavaScript模型绑定到输入元素

但是,我希望将模型发布到我的Spring控制器,作为经典的formdata执行,这样我就可以利用Spring SessionAttributes

我将iron ajax设置为:

<iron-ajax id="saveMailing"
    method="POST"
    url="/api/mailing"
    content-type="application/x-www-form-urlencoded"
    on-response="mailingSaved">
</iron-ajax>
this.mailing
是一个JSON对象。它不是FormData()

结果是在iron request.html:421中出现了一个JavaScript错误“无法读取属性toString of null”


有可能做我想做的事吗?我的意思是传递一个JSON对象,并期望它将其转换为FormData。或者我没有正确使用iron ajax吗?

假设您肯定
这一点。邮件
不是
null
,您需要首先将其字符串化:

this.$.saveMailing.body = JSON.stringify(this.mailing);

你还没有告诉我们这是从哪里来的。邮件
看起来像iron ajax认为它是空的。我肯定用了
iron ajax
new FormData()
样式的数据集。一旦你添加了上面的
this.mailing
定义,你肯定会忽略一些愚蠢或小的东西。this.mailing是一个json对象,它不是空的。我相信真正的问题是:iron ajax能将JavaScript对象转换成FormData()吗?我已经尝试过了,现在又重新尝试过了。。。但它也不起作用。事实上,它可以发布帖子,但不是表单数据,而是JSON字符串。因此JSON.stringify()可以工作,但不会转换为表单数据。您是否在服务器端使用PHP?我发现自己不得不使用
$\u POST=json\u decode(file\u get\u contents('php://input",对),。我使用Spring控制器,即Java,以及ModelAttribute注释,该注释将表单数据直接解析为对象。
this.$.saveMailing.body = JSON.stringify(this.mailing);