2013-07-10 38 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

相關問題