我试图创建一个具有四个属性的原型对象: '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(数组)之外的其他属性,或者这个有点覆盖其他属性...当我尝试获取名称或基础时,将返回该数组。
有谁知道如何解决这个问题? 在此先感谢您的帮助,
马拉
答案 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字符串并确保获得您期望看到的结果。