【问题标题】:Better way of formatting arrays from javascript to php and vice versa?将数组从 javascript 格式化为 php 的更好方法,反之亦然?
【发布时间】:2012-09-03 19:33:26
【问题描述】:

我正在创建一个页面,它将读取、写入和修改 mysql 数据库中的数据。我正在使用带有 codeigniter 的 php 来执行查询,但是用户将看到的页面我使用 javascript 供电,根据用户选择动态填充和更改数据。为此,我在 php 和 javascript 函数之间来回传递大量数据,反之亦然,但我想知道是否有更好的格式化数据的方法。例如这里是一个使用 XMLHttpRequest 调用 php 函数并获取结果的 javascript 函数:

var myarray = new Array(2);
myarray[0] = document.getElementById("my_input").value;
myarray[1] = document.getElementById("my_select").value;
xmlhttp.open("POST", "my_url/my_function/"+myarray.join('|'), false);
xmlhttp.send();
document.getElementById("my_element").innerHTML=xmlhttp.responseText;

我只是简单地对传递给 php 函数的字符串执行explode() 并执行必要的查询。这似乎是 php 和 javascript 之间非常尴尬的交互。有没有更好或至少不同的方法来做到这一点?

【问题讨论】:

标签: php javascript codeigniter xmlhttprequest


【解决方案1】:

JSON(JavaScript Object Notation)似乎是您正在寻找的。您可以使用 JSON.stringify 将几乎所有类型的 Javascript 变量转换为字符串,然后使用 json_decode 恢复 php 中的原始结构,反之亦然使用 json_encodeJSON.parse

见:

【讨论】:

  • 这基本上不是我使用 javascript .join() 和 php explode() 函数模拟的,只是它可以与不是字符串的数据类型一起使用?
  • @WillSampson 在技术上是的,但它可以处理嵌套数组或对象,例如,或命名属性,您的方法可能会中断的场景。另外,json 是当今几乎无处不在的相当普遍的标准。
  • 记住 JSON.stringify 在 IE 7 或 6 中不被原生支持,所以你需要使用像 json2 这样的解析器来支持它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-16
  • 1970-01-01
  • 1970-01-01
  • 2011-07-24
  • 2015-08-16
  • 1970-01-01
  • 2011-01-25
相关资源
最近更新 更多