发现另一个有趣的事情。在我的查找电子邮件方法(收集最终mysql调用的电子邮件地址)中,该方法如下所示:
protected function setAllByEmail($email) {
$data = array( 'names' => array(), 'phones' => array(), 'emails' => array(), 'orders' => array(), 'requestIDs' => array() );
$this->load->model('cookies/vwrequesthistory');
$araCookies = $this->vwrequesthistory->getByEmail($email);
if (count($araCookies) !=0) {
// filter and run 2 more models against 2 more db's for email addys
}
如果我在方法的第一行之后添加了任何新代码或 return $data
,我就会开始遇到奇怪的编码问题,但只要我将旧方法单独留下(它使用我试图摆脱的模型!)它没有奇怪的ISO编码就可以正常工作!
经过几个小时的冲击,我开始反向移动。关于如何收集这些数据的一个小背景。在收集最终查询数据的3个初始查询之后,查询最终结果(包含我需要在浏览器中显示的电子邮件HTML )。我有3个php方法使用CI的load->database->
方法调用这些初始查询。然后我调用最后的查询。在我使用这些函数的OLD方式中,eached接触到该数据库的独立模型并抓取所需内容,然后过滤返回。在我的新方法中,每个函数使用CI的AR直接调用DB,然后过滤结果。两种方法都以不同的方式完成相同的工作。在我的新问题中,我发现如果我打电话给我的新手机,请拨打电话&用我的OLD获取订单#方法获取电子邮件方法,一切都很好。但是一旦我尝试使用我的新的获取EMAIL方法,就是当我得到奇怪的编码时。但是,数据返回似乎与其中任何一个完全相同!
我运行了一些扩展测试,包括分配新方法并立即返回错误数据,但仍然遇到同样的问题。我甚至尝试分配新方法并使方法完全空白,同样的问题!我尝试将新方法转移到旧方法,同样的问题!它似乎只适用于旧方法,这种方法写得很糟糕!
DATA返回
OLD
array(5) {
["names"]=>
array(2) {
[0]=>
string(7) "Anon"
[1]=>
string(12) "Anon Anon"
}
["phones"]=>
array(1) {
[0]=>
string(10) "5555555555"
}
["emails"]=>
array(1) {
[0]=>
string(23) "Anon@gmail.com"
}
["orders"]=>
array(1) {
[0]=>
string(5) "987654"
}
["requestIDs"]=>
&array(0) {
}
}
NEW
array(5) {
["names"]=>
array(2) {
[0]=>
string(7) "Anon"
[1]=>
string(12) "Anon Anon"
}
["phones"]=>
array(1) {
[0]=>
string(10) "5555555555"
}
["emails"]=>
array(1) {
[0]=>
string(23) "Anon@gmail.com"
}
["orders"]=>
array(1) {
[0]=>
string(5) "987654"
}
["requestIDs"]=>
array(0) {
}
}
负载布局如下(暂时):
masterView-> usePHPinBodyToLoadEmailListView-> UseAjaxToGetDataToPopulateView
所以我查看了几十个答案,谷歌搜索,并尝试了我所知道的一切,包括标题更改,访问更改,文件编码更改;一切。在一天结束时,这是我的工具列表:
Komodo Edit / Codeigniter / MySQL / jQuery.Ajax Method / Google Chrome&火狐
我的问题:空格被替换为& nbsp和其他ISO-8859-1类型的古怪
我观察到的内容 :(可能是问题的关键)
The Data is sent to jQuery.getJSON as `echo(json_encode($data));`
The HTML seemed to parse just fine to the web page in original config,
however the data layout was undesirable as it interfered with other pulls
The Data itself was originally arranged as follows:
array(i) [
0 => array(i) [
'emailID' => 'string',
'emailType' => 'string',
'emailHTML' => 'string', <---- the html pulled!!!
],
1 => [
'emailID' => 'string',
'emailType' => 'string',
'emailHTML' => 'string', <---- the html pulled!!!
],
'initData' => array(i) [ ... ]
]
The New Data Layout: (When the error mentioned began to occur)
array(i) [
'initID' => 'string',
'initEmailAddy' => 'string',
'initPhone' => 'string',
'emailPull' => array(i) [
0 => array(i) [
'emailID' => 'string',
'emailType' => 'string',
'emailHTML' => 'string' <---- the html pulled!!!
]
1 => array(i) [
'emailID' => 'string',
'emailType' => 'string',
'emailHTML' => 'string' <---- the html pulled!!!
]
2 => array(i) [ ... ]
]
]
如果不更改我的数据布局,是否可以解决我的问题,如果是,为什么?
更改回原始数据结构并仍然有新问题!现在我真的迷路了。我将所有内容重置为0,字面意思。新文件夹,新文件,复制和粘贴代码在文本编辑器中记录我的编码的整个时间。一切都设置为UTF-8,包括数据库,但我仍然得到相同的ISO结果!? HTML包含<meta>
标记,CI具有字符集集,修改后的标题库强制使用UTF-8标头。看起来我已经做了一切可以想象的事情,2天前一切正常!我老实说现在找不到问题了。
在HTML页面上使用PHP提取数据时,它显示得很好。通过控制器加载,在页面上使用PHP,工作正常,当通过AJAX加载到母版页时,它突然中断。我已经在我的电话上设置了编码,但仍然没有。还尝试通过PHP而不是ajax加载它仍然破坏。但是2天前,在这个相同的布局(controller-&gt; masterpage-&gt; loadContent)中,它运行得很好。自那时以来我唯一改变的是是我安排发送到getJSON
电话的数据的方式。