php中的JSON意外令牌
JSON unexpected token in Slim.php
我有这个简单的JSON请求
var jsonObject = {apiKey:'123123',method:'asdfsadfasdf',ip:'123.232.123.12'};
$.ajax({
url: "http://api.example.com/users/add",
type: "POST",
data: jsonObject,
dataType: "json",
success: function (result) {
switch (result) {
case true:
alert(result);
break;
default:
break;
}
},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
}
});
发送到精简API
$app->post('/add', function () use ($app) {
$user = $app->request->post() ;
$ip = $user['ip'];
$method = $user['method'];
$apiKey = $user['apiKey'];
});
然而,在javascript中的警报显示123123,当我返回apiKey,但其他2个参数显示'意外令牌',即使在Chrome控制台的响应显示正确的值。
在$.ajax
中设置dataType
,您期望来自服务器的响应应该是json
有效的字符串。来自文档:
"json":将响应计算为json并返回JavaScript对象。[…JSON数据被严格解析;任何格式错误的JSON被拒绝,并抛出解析错误。
看起来你想返回你的参数。要做到这一点,只需以正确的方式打印数据(在JSON中编码):
$app->post('/users/add', function () use ($app) {
$user = $app->request->post() ;
$ip = $user['ip'];
$method = $user['method'];
$apiKey = $user['apiKey'];
echo json_encode($user);
});
现在您可以使用success
$.ajax
回调的result
参数访问该数据。
好的,但是我想用我自己的方式打印数据
如果你愿意,你也可以直接打印字符串,使用双引号:
echo "'"$method'"";
你的json解析现在可以正常工作了。
数字(例如apiKey
)工作没有问题,因为它们是数字,它们不需要双引号。
进一步阅读:JSON.parse()文档的MDN.
相关文章:
- React JS:未捕获(在承诺中)语法错误:在位置 0 的 JSON 中意外<令牌
- 未捕获的语法错误:意外的令牌,
- jQuery$.getJSON抛出意外令牌
- 当其他解析器认为意外的令牌有效时,json.parse会失败
- 意外的令牌模块生成失败:SyntaxError
- 为什么我在下面的..of循环中得到意外令牌
- 意外的令牌非法javascript/metrol
- 三元条件中出现意外的令牌中断
- DynamoDB和Node Js:意外的令牌h
- RegEx中出现意外的令牌错误
- data.php:1未捕获的语法错误:意外的令牌:
- 错误:[$parse:syntax]语法错误:令牌''是意外的令牌
- 组件中的ReactJS意外令牌
- Jquery脚本未在运行时加载编辑:意外的令牌
- 未捕获的语法错误:意外的令牌非法?看起来不错
- "未捕获的SyntaxError:意外的令牌ILLEGAL“;当我通过AJAX发送html时
- 获取意外的令牌ILLEGAL JS错误
- JavaScript-Gulp/Browserify:SyntaxError:意外的令牌
- Jquery .ajax() SyntaxError: 意外的令牌 N.
- AngularJS $http GET 请求到本地 JSON 文件返回语法错误:意外令牌]