2009-12-22 66 views
0

我試圖創建一個具有四個屬性的原型對象: '名稱','基礎'和'行',這些值是從表格中取得的值和 'head',它應該是一個字符串值的數組。在原型類中定義數組?

Classdef:

var TableTemplate = Class.create(); 
TableTemplate.prototype = { 
    initialize: function(name, basis, head, rows) { 
     this.name = name; 
     this.basis = basis; 
     this.head = head;  
     this.rows = rows; 
    }, 
}; 

應當傳遞到後端一個PHP文件如下:

function sendRequest() { 
var sorting = doSorting(); 
//alert(sorting.inspect()); 
var table = new TableTemplate($F('templateName'), $F('basisTemplate'), sorting , $F('maxRows')); 
new Ajax.Request("test.php", 
    { 
    method: 'post', 
    postBody: 'table='+ Object.toJSON(table), 
    onComplete: showResponse 
    }); 
} 

其中 'doSorting()' 返回一個字符串數組。

問題: 我似乎無法獲得對象頭部(數組)以外的其他屬性,或者這個有點覆蓋其他屬性...當我嘗試獲取名稱或基礎時,該數組將會是回。

有沒有人有一個想法如何解決這個問題? 預先感謝您的幫助,

馬拉

+0

(OT)您的類定義適用於Prototype 1.5.x.如果你使用的是1.6.x(理想情況下你應該是這樣,它已經過了幾年,並且從1.5開始有很多錯誤修正),你會想更新它,所以你不會替換返回的函數的原型'Class.create'。更多在這裏:http://api.prototypejs.org/language/class.html – 2009-12-22 10:58:40

回答

0

(警告:我不是一個PHP的人,它有一些內置JSON處理,我是不熟悉的,但我。對原型相當熟悉。)

您正在指定請求的postBody,這意味着您負責確保其編碼正確。您發送的內容如下所示:

table={"name": "some template", "basis": "some head", "head": ["blah", "blah", "blah", "blah"], "rows": 15} 

根據內容的不同,它可能不會按照您期待的那樣進行編碼。

不是specifyihng的postBody,我可能只是把它作爲一個參數,讓框架擔心逃跑的事情對我來說:

new Ajax.Request("test.php", 
    { 
    method: 'post', 
    parameters: {table: Object.toJSON(table)}, 
    onComplete: showResponse 
    }); 

然後檢索從「表」參數的JSON字符串PHP端並解碼它。

如果你還沒有得到你期望的結果,看看JSON字符串,並確保你得到了你期望看到的。

+0

感謝您的快速回答! 我認爲現在問題已解決。 – Mara 2009-12-22 14:21:56