KnockoutJS-发送包含javascript对象值的表单会导致超时
KnockoutJS - Sending a form containing the value of a javascript object results in a timeout
我在尝试发送表单时遇到了一个问题,如果存在特定的字段类型,页面将返回超时。
我正在使用KnockoutJS的映射插件来映射来自服务器的对象。我可以修改对象,并希望将其发回。
为此,我创建了一个计算函数,该函数返回我将此特定对象传递给的ko.toJSON
的结果。然后,这个值被放在一个隐藏的输入中,发送回服务器:
<input type="hidden" name="a" data-bind="value: exportToJSON()" />
当我发送带有此输入字段的表格时,我收到一个错误7:
错误7(net::ERR_TIMED_OUT):操作超时。
这是一个代表我的代码的JSFiddle
http://jsfiddle.net/etiennenoel/4EXSy/17/
我怀疑问题是因为通过POST发送的字段中的数据没有转义而引起的?
更新1
有人建议使用ko.mapping.toJSON。但是,这样做会导致一个空字符串,请在此处查看:http://jsfiddle.net/etiennenoel/4EXSy/18/
更新2
现在,由于@abc123,结果输入不是空的:http://jsfiddle.net/etiennenoel/4EXSy/19/.然而,在发送POST数据时,我仍然会超时。您可以在代码中看到当我发送表单时发送的POST数据:http://pastebin.com/hNRm4zdZ
更新3
我正在使用symfony2,我开始认为这个问题可能与symfony2中的某些内容有关,因为当我将表单复制并粘贴到一个简单的.html文件上时,数据会被发送。。。
更新4
我删除了Symfony2 dev.log,点击按钮发送表单,得到了超时错误,不幸的是,日志仍然是空的。。。。此外,所有php和apache日志都没有显示任何内容。。。
更新5
我最终决定在另一台服务器上测试我的symfony网站,它在另一个服务器上运行。。。现在这变得很奇怪,为什么它不能在我的本地服务器上工作?我使用MAMP Pro作为本地服务器
返回ko.mapping.toJSON(self.playersEvaluation)
时,如果不调用函数,就无法访问knocket的属性,因为它实际上是一个函数。
要让它返回正确的JSON,请执行以下操作:
function appViewModel() {
var self = this;
self.playersEvaluation = ko.observableArray();
self.exportToJSON = ko.computed(function() {
return ko.mapping.toJSON(self.playersEvaluation())
}, this);
}
JSFiddle:http://jsfiddle.net/abc123/WReza/1/
要轻松使用控制台:http://jsfiddle.net/abc123/WReza/1/embedded/result/
幸运的是,由于您正在使用ko.mapping
插件,这将起作用,因为它可以执行以下操作:
- 对象的所有属性都转换为可观察的属性。如果更新会更改值,则会更新可观测值
- 数组被转换为可观察的数组。如果更新会更改项目数,则会执行相应的添加/删除操作。它还将尝试保持与原始JavaScript数组相同的顺序
取自ko.mapping
- 可以't让我的if语句处理js中的html表单输入
- 如何使用WCF服务和javascript表单post上传.doc文件
- Javascript生成的表单未提交
- 如何使用javascript或html下载PDF格式的填写表单
- HTML表单提交时未执行外部函数
- 如何将输入(type=text)从html表单传递到javascript函数
- 通过单击表单中的按钮,在代码生成中使用javascript生成字母数字代码
- Ajax发布表单序列化,发布引号'
- 多级HTML表单
- 后焦点更改为IE 11中的地址栏,而不是转移到表单中的下一个控件
- 在验证和发送邮件后更改联系人表单的 html
- jQuery表单添加不适用于下拉列表
- Rails/JSON:如何将JSON用于jquery UI自动完成表单
- 如何从pdftron webviewer获取表单数据
- 如何检测表单提交超时并重新提交
- KnockoutJS-发送包含javascript对象值的表单会导致超时
- 表单按钮在javascript中重写超时事件
- 超时后在jquery php中提交表单
- Javascript重定向超时表单提交
- jQuery带超时的同步表单提交