在Prototype类中定义数组?

时间:2009-12-22 10:45:04

标签: javascript arrays class prototypejs

我试图创建一个具有四个属性的原型对象: 'name','basis'和'rows',它们是从表单中获取的值 '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()'返回一个stringarray。

问题: 我似乎无法获得除了对象中的head(数组)之外的其他属性,或者这个有点覆盖其他属性...当我尝试获取名称或基础时,将返回该数组。

有谁知道如何解决这个问题? 在此先感谢您的帮助,

马拉

1 个答案:

答案 0 :(得分:0)

(警告:我不是一个PHP人员,它有一些我不熟悉的内置JSON处理。但我对Prototype非常熟悉。)

您正在指定请求的postBody,这意味着您负责确保正确编码。您发送的内容将如下所示:

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

根据内容的不同,它可能不会像您期望的那样进行编码。

我可能只是将它作为参数发送,让框架担心为我逃避的事情,而不是指定postBody

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

然后从PHP端的“table”参数中检索JSON字符串并对其进行解码。

如果您仍未获得预期的结果,请查看JSON字符串并确保获得您期望看到的结果。