Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Chrome中的JSON无效,Firefox中没有问题(太奇怪了!)_Php_Json_Google Chrome - Fatal编程技术网

Php Chrome中的JSON无效,Firefox中没有问题(太奇怪了!)

Php Chrome中的JSON无效,Firefox中没有问题(太奇怪了!),php,json,google-chrome,Php,Json,Google Chrome,所有钥匙都是双引号。 整个元素是一个对象。 Firefox运行良好,但Chrome报告“无效JSON”。为什么? 这是完整的代码 ///////////// PHP //////////////// public function listAlbumAction() { $params = $this->_getAllParams(); $albums = $this->_album->getAlbumList($params['albumType'], $pa

所有钥匙都是双引号。 整个元素是一个对象。 Firefox运行良好,但Chrome报告“无效JSON”。为什么?

这是完整的代码

///////////// PHP ////////////////
public function listAlbumAction()
{
    $params = $this->_getAllParams();
    $albums = $this->_album->getAlbumList($params['albumType'], $params['from'], $params['numberOfAlbums']);
    echo json_encode(array("code" => 0, "data" => $albums));
}

///////////////////////////////// JQuery ///////////////////
function loadAlbums()
{
    $.ajax({
        type: 'GET',
        url: '/about-photo/list-album',
        data: {albumType: selectedAlbumType, from: currentPageIndex * numOfAlbumsPerPage, numberOfAlbums: numOfAlbumsPerPage},
        success: function(json) {
            var obj;
            var data;
            try {
                obj = $.parseJSON(json);
                data = obj.data;                                    
            } catch(e) {
                alert(e);
            }               

            if(obj.code == 0) {
                // get number of albums
                var num = data.length;

                // remove old list content
                $('#albumListContent').remove();

                var albumListHTML = '';
                albumListHTML += '<div id="albumListContent">';

                for(var i = 0; i < num; ++i) {                          
                    albumListHTML += '<div id="w' + data[i].album_id + '" class="imgWrapper">';
                    albumListHTML += '<img id="a' + data[i].album_id + 
                                     '" class="albumImg" width="150px" src="' + 
                                     data[i].album_cover + '" alt="not found" title="' + 
                                     data[i].album_name + '"/>';                                             
                    albumListHTML += '<div class="albumTitle">' + data[i].album_name + '</div>';
                    albumListHTML += '</div>';                      
                }

                albumListHTML += '</div>';
                $('#albumListContentWrapper').html(albumListHTML);

                addAlbumHandler();
                addPhotoEffects('.albumImg');                   
                addImgErrorHandler('.albumImg');
            }
        }
    });
}
Firefox的JSON输出(Firebug):

我检查了一下,上面写着“有效的JSON”

编辑

从Chrome查看的来源:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

尝试将JSON(在PHP代码中)封装在括号中。。。在
parseJOSN

之前,在ajax调用的success函数中删除它们(基于您提供的Chrome和Firefox输出之间的差异),我的猜测是,您的PHP输出中有一些前导(或尾随)空格和/或换行符

您只为相关函数提供了PHP,但请检查主程序和加载了
include()
require()
的任何其他PHP文件中的
标记前后是否没有空格


这是PHP代码中相当常见的问题。在一个普通的HTML页面中,这其实并不重要(最终会产生大量虚假的空白,但这不会影响渲染),但是当输出其他类型的数据时,它可以决定数据是否有效。如果您正在输出二进制数据,这一点尤其正确。我以前没有用JSON看到这个问题,但是在你引用的字符串开始的空白空间是这类事情的一个经典符号。

你在PHP文件的开头有一个Unicode。正因为如此,而且因为它是在开始

之前,您的实际JSON输出是什么样子的?@Jahufar-eh
json_encode()
不发送任何头;它只生成一个字符串。对您来说是有效还是失败?(适用于我的Chrome。)在PHP文件的开头有Unicode BOM(字节顺序标记)吗?如果是这样的话,你能看看你的编辑器是否可以保存文件而不保存它,然后再试一次吗?@Matt Gibson:我用记事本++来写网页,我在没有BOM的情况下将它们全部更改为Utf8,它成功运行了!请将其作为答案发布,并解释原因:DI下载所有源代码,但找不到任何冗余空间。谢谢你的帮助,谢谢。顺便说一句,铬是如此严格。xDI在IE6和Safari4上也有类似的问题。你的回答帮助我解决了那个问题。谢谢
{"code":0,"data":[{"album_id":42,"album_name":"Best album","album_type":"photo","create_date":"09-05-2011 5:48:40","album_cover":"\/x\/media\/6.jpg","description":"Something here"},{"album_id":56,"album_name":"Test album","album_type":"photo","create_date":"09-05-2011 19:27:50","album_cover":"\/x\/media\/44227440_2f1f369517.jpg","description":"apples"},{"album_id":59,"album_name":"Album for something","album_type":"photo","create_date":"10-05-2011 16:19:03","album_cover":"\/x\/media\/apple-howto.jpg","description":"zzz"},{"album_id":62,"album_name":"Vietnam - Thailand - AFF Suzuki cup 2007","album_type":"photo","create_date":"17-05-2011 14:30:32","album_cover":"\/x\/media\/pwjps1231986828.jpg","description":""},{"album_id":63,"album_name":"CS","album_type":"photo","create_date":"17-05-2011 15:24:01","album_cover":"\/x\/media\/apple-logo.jpg","description":""},{"album_id":64,"album_name":"It works","album_type":"photo","create_date":"17-05-2011 15:24:56","album_cover":"\/x\/media\/it_works.png","description":""}]}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />