【问题标题】:return a PHP object to an ajax call将 PHP 对象返回给 ajax 调用
【发布时间】:2014-04-20 17:07:27
【问题描述】:

我正在学习 PHP OOP,并习惯了所有这些对象。

当我在通过$.ajax 函数调用的 PHP 文件中创建对象时,我想返回答案。但是我应该如何将对象发送回我的 ajax 调用?在 OOP 之前,我将所有内容放入数组中,然后将 json_encode() 放入数组中,一切都运行良好。如何使用 OOP 进行调整?

非常感谢您的回答 罗曼

例子:

在客户端

$.ajax(
{
  url:"test.php",
  type:"POST",
  dataType:"json",
  success:function(json)
  {
    // json into template
  }
});

在服务器端test.php

require_once("bdd.php");

function loadClass($class)
{
    require $class.".class.php";
}

spl_autoload_register('loadClass');

$PersonneM = new PersonneManager($db);

$perso = $PersonneM->get("123456");

$perso = serialize($perso); // ????????????

header('Content-type: application/json');
echo json_encode(array("result",$perso));

【问题讨论】:

  • 您的成功函数语法不正确。应该是:success: function(json) { . . . }.
  • 是的,抱歉。反正这不是问题
  • 我猜你的意思是最后一行的echo json_encode(array("result"=>$perso));。还有 - 不需要 serialize 对象 - json_encode 知道如何处理自定义对象(它将占用所有 public 属性)

标签: javascript php jquery oop


【解决方案1】:

使用 serialize 或 __toString 创建您的数据的 JSON 表示形式,您可以将其发送到管道中。您将不需要在对象周围添加额外的数组。

但是,某些 JSON 解析器/解释器中存在错误,如果未将数据封装在数组中,可能会弄乱您的数据。但是几年来我没有听说过这个问题,所以你应该安全

【讨论】:

  • 您还应该注意 PHP 在 lowerCamelCase 中工作,因此 $PersonneM 将是无效标记。应该是$personneM
猜你喜欢
  • 2014-10-29
  • 2016-02-16
  • 1970-01-01
  • 1970-01-01
  • 2016-03-25
  • 1970-01-01
  • 1970-01-01
  • 2012-01-28
相关资源
最近更新 更多