2013-07-10 27 views
1

我尝试发送表单时发生问题,如果存在特定的字段类型,则页面返回超时。KnockoutJS - 发送包含javascript对象值的表单会导致超时

我使用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中,我开始觉得问题可能与因为当我复制并粘贴在一个简单的HTML文件的形式Symfony2的东西,得到的数据发送...

更新4

我删除的Symfony2 dev.log,点击该按钮,发送形式,得到了超时错误不幸的是,日志仍然是空的....而且,所有的PHP和Apache日志不显示任何东西......

更新5

我终于决定来测试我的symfony网站另一台服务器上它可以在另一台服务器上运行......现在这变得很奇怪,为什么它不在我的本地服务器上工作?我使用MAMP Pro作为本地服务器

+0

两者请仔细阅读http://knockoutjs.com/documentation/submit-binding.html以及如何序列淘汰赛对象ko.mapping.toJSON(对象); – abc123

+0

当我用您提供的行替换行时,结果为空。 – CoachNono

+0

@ abc123这就是我的意思:jsfiddle.net/etiennenoel/4EXSy/18 – CoachNono

回答

1

您正在返回ko.mapping.toJSON(self.playersEvaluation)你不能没有调用函数访问淘汰赛的性质,因为它实际上是一个函数。

为了得到它返回正确的JSON,请执行以下操作:

function appViewModel() { 
    var self = this; 
    self.playersEvaluation = ko.observableArray(); 
    self.exportToJSON = ko.computed(function() { 
      return ko.mapping.toJSON(self.playersEvaluation()) 
    }, this); 
} 

的jsfiddle:由于您使用的是ko.mapping插件这将http://jsfiddle.net/abc123/WReza/1/embedded/result/

幸运的是:http://jsfiddle.net/abc123/WReza/1/

轻松地使用控制台因为它做了以下工作:

  • 对象的所有属性都转换为可观察对象。如果更新会更改该值,则会更新可观察值。数组转换为可观察数组。如果更新会更改项目数量,则会执行相应的添加/删除操作。它也会尝试保持订单与原始JavaScript数组相同。

ko.mapping

+0

谢谢你的时间。我试图修改我的代码(不在JSFiddle),我仍然得到一个超时...如果我评论隐藏的输入字段,那么超时不存在... – CoachNono

+0

这里是我的发布数据输出:http:/ /pastebin.com/hNRm4zdZ – CoachNono

+0

我更新了我的问题,我认为Symfony2和某些后期数据格式可能存在问题... – CoachNono

相关问题