2009-12-22 64 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