Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.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
Javascript 是什么导致了“;未捕获的语法错误:意外标记o”;使用$.parseJSON()和JSON.parse()进行_Javascript_Angularjs - Fatal编程技术网

Javascript 是什么导致了“;未捕获的语法错误:意外标记o”;使用$.parseJSON()和JSON.parse()进行

Javascript 是什么导致了“;未捕获的语法错误:意外标记o”;使用$.parseJSON()和JSON.parse()进行,javascript,angularjs,Javascript,Angularjs,我已经看过了SO和谷歌,但没有发现有什么帮助,我不确定如何继续。我使用echo json\u encode()从php页面返回一个数组,如下所示: [" "," "," "," "," ",1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31] <?php header("Content-Type: text/json"); echo json_encode(array("s

我已经看过了SO和谷歌,但没有发现有什么帮助,我不确定如何继续。我使用
echo json\u encode()
从php页面返回一个数组,如下所示:

[" "," "," "," "," ",1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]
<?php
header("Content-Type: text/json");
echo json_encode(array("someKey" => "someValue"));
但是,当我尝试使用JSON.parse()时,Object.parse(native)上总是出现
意外的标记o,而当我使用JQuery变量时,Function.parse(native)
上总是出现
意外的标记o

但是,当我将其附加到
$scope
时,我可以在页面上使用打印出来,那么我做错了什么,我如何纠正这一点

这是我的控制器

function myController($scope, memberFactory) {

    response = memberFactory.getMonth("2013-08-01 06:30:00");
    //$scope.response = response;
    var monthDays = $.parseJSON(response);

    var dates = [];
    for (var i = 0; i < monthDays.length; i++) {
        if (i % 7 == 0) dates.push([]);
        dates[dates.length - 1].push(monthDays[i]);
    }
    $scope.dates = dates;
    //
}
这是我的php:

<?php $daysOfMonth=[ " ", " ", " ", " ", " ",1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];
echo json_encode($daysOfMonth); ?>

现在我得到
console.log的
1
(“数据”+data[0])如预期,但我得到
console.log(月)
对于
console.log(month.promise)
我获取
[object object]
,对于
console.log(month.promise[0])我得到的
未定义的
响应已被解析,您无需再次解析它

如果您再次解析它,它将首先执行toString转换,因此您正在解析它

"[object Object]"

这解释了
意外标记o

请查看转换模块请求和响应的章节

如果检测到JSON响应,则使用JSON解析器对其进行反序列化

由于它已经被解析为JSON对象,如果您再次解析它,您将得到该错误

下面是一个简单的测试:

response = '{"a": "a","b": "b"}';
var obj = $.parseJSON(response);
console.log(obj); //Object {a: "a", b: "b"} 
$.parseJSON(obj)  //Uncaught SyntaxError: Unexpected token o 

在@CuongLe的帮助下,通过替换

 response = memberFactory.getMonth("2013-08-01 06:30:00");
 var monthDays = $.parseJSON(response);
与:

response=memberFactory.getMonth(“2013-08-01 06:30:00”);
回答,然后(
功能(月日){
log(“monthDays:+monthDays+”!!!);
var日期=[];
对于(变量i=0;i
如果发送了标题:

Content-Type: text/json
然后不需要调用
parseJSON()
。例如:

在PHP中,我会设置如下标题:

[" "," "," "," "," ",1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]
<?php
header("Content-Type: text/json");
echo json_encode(array("someKey" => "someValue"));

你在调试器中看到了什么?@Slak我刚刚看到[object object]可能有不可见的字符,比如BOM。。也不要在数组中混合类型。@Esailija没有不可见的字符,混合类型不是问题,因为我只尝试了数字和字符串,得到了相同的问题。关于混合类型的建议与您当前的问题无关,但只是一个一般性建议。因此如何访问值,我尝试使用响应[0],但运气不佳,我尝试了
Object.keys(response)
获取密钥,它返回
then
,response[“then”]不返回任何内容
console.log(response)以查看它的外观<代码>响应[0]
如果您要返回该数组,应该可以工作。对于
控制台.log(response)
我得到
[object object]
,对于
控制台.log(response[0])
我得不到定义,如果我像这样附加到作用域
$scope.response=response
那么
{response}
显示为
[,,,,,,,,,,,,,,,,,,,”,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]
看起来根本不对。。你能确认你没有第二次隐藏解析吗?没有第二次解析,我已经全部删除了
<?php
header("Content-Type: text/json");
echo json_encode(array("someKey" => "someValue"));
success: function(response) {
// This will output "someValue" to the console.
// Note the lack of the parseJSON() call. parseJSON() is called for us because the header was sent as text/json
console.log(response.someKey);
}