带有数据映射器 ORM 的 CodeIgniter
Posted
技术标签:
【中文标题】带有数据映射器 ORM 的 CodeIgniter【英文标题】:CodeIgniter with datamapper ORM 【发布时间】:2013-04-11 06:22:28 【问题描述】:我在数据映射器中使用get()
方法从数据库中选择列。我将这个对象传递给json_encode();
当我这样做时,我得到了这个错误
json_encode() type is unsupported, encoded as null
更新三
["\"id\":1,\"name\":\"JOHN\",\"city\":\"null\""
,"\"id\":2,\"name\":\"MICHEAL\,\"city\":\"null\""]
这是我的回应,我没有选择城市但仍然出现城市。如何获取正确格式的json
SyntaxError: JSON.parse: JSON 数据后出现意外的非空白字符
[Break On This Error]
var jsonData = JSON.parse(data);
【问题讨论】:
你在模型中使用这个吗? @Crowlix:感谢您花时间回答我的问题。在我的模式下,我有这个代码类标签扩展 DataMapper。我应该将 application/datamapper 包含到我的代码点火器应用程序文件夹中。你能告诉我,通常如何使用 get() 并将该对象传递给 json_enocde。跨度> 【参考方案1】:将 Datamapper 对象编码为 json 对象需要来自扩展的函数。您可以在此处找到导入扩展的方法:http://datamapper.wanwizard.eu/pages/extensions.html 这是一种方法:
class Test extends DataMapper
// Include the json extension
var $extensions = array('json');
.......
$test= new Test();
$test->where('id', $this->input->post('id'));
$test->select('id,name');
$test->get();
$test->set_json_content_type();
echo $test->all_to_json();
“城市”列存在的事实是正常的。来自 DataMapper 用户指南:
该对象由其对应表中的所有对象填充, 但只填充了标题和描述字段
要解码您的 JSON,您需要使用此方法(如果您还没有导入扩展,请不要忘记导入)
$n = new Test();
$n->from_json([put your JSON string here]);
【讨论】:
:如果我使用,回显 $test->all_to_json();我在 JSON 中得到带有斜杠的输出。现在问题是斜线,如果我删除斜线,我很高兴。 顺便说一句,您应该删除一些 cmets。这有点混乱:p :我已经发布了我的问题的更新三,仍然存在问题。 :我使用了 srt_replace() 并删除了所有斜杠,但在我的 jquery 成功 fn 中,如果使用 console.log(data)。什么都没有打印出来。我没有尝试过你最近的答案。我应该在哪里解码,我的意思是,我应该在控制器中使用它。你为什么同时回显编码和解码。 :我将 json_encode 值传递给我的 jquery ajax fn,所以如果我使用 JSON.parse(data),我可以得到它,但现在为什么它没有传递给我的 jqery ajax fn【参考方案2】:我没有将 Datamapper 用于 CI,但我很确定您应该执行以下操作:
$test= new Test();
$test->select('id,tag_name');
$test->where('id', $this->input->post('id'));
$test->get();
json_encode($test);
注意:调用 ->get() 应该是最后一次调用,在您使用 $test 变量对其进行 JSON 编码之前。
【讨论】:
以上是关于带有数据映射器 ORM 的 CodeIgniter的主要内容,如果未能解决你的问题,请参考以下文章
哪个是 codeigniter 的最佳 PHP ORM? [关闭]