XMLHttpRequest.responseText 未呈现 json 编码输出
XMLHttpRequest.responseText is not rendering the json encoded output
我的 $request->generate( 'web_notifier' )
生成了 link:
header( 'Content-Type: application/json' );
# Die is used to ensure nothing else is being outputted further down the script
die( json_encode ( array(
'session' => array(
'token' => $request->session( 'crsf_token' )
)
) ) );
当我访问这个 API link 时,我得到了这个输出(我可以看到 header 中的 Content-Type 设置为 application/json:
{"session":{"token":"3d096c30a00da9ab37019122622dac80edec6db0cf006d5f4450ecd8d813c692"}}
但是,如果我现在尝试使用 XMLHttpRequest
查看 session.token
,如下所示,我会得到 Cannot read property 'token' of undefined
,这告诉我它没有被呈现为 JSON.
let req = new XMLHttpRequest();
req.onload = () => {
console.log(req.responseText.session.token);
console.log(req.responseText['session']['token']);
};
req.open( 'GET', '{{$request->generate( 'web_notifier' )}}' );
req.send();
我做了一个 console.log(req.responseText)
并且可以看到它是字符串格式 - 如果我正确指定了 Content-Type 并使用了 json_encode()
为什么会这样?我该如何解决这个问题?
json 解析不是自动的,您需要将您的响应传递给 JSON.parse(str),我还建议您使用 fetch 而不是 XMLHttpRequest,它具有内置转换。
fetch(url).then(res => res.json()).then(handler)
jsonString = '{"data": "some_data"}'
console.log(JSON.parse(jsonString))
我的 $request->generate( 'web_notifier' )
生成了 link:
header( 'Content-Type: application/json' );
# Die is used to ensure nothing else is being outputted further down the script
die( json_encode ( array(
'session' => array(
'token' => $request->session( 'crsf_token' )
)
) ) );
当我访问这个 API link 时,我得到了这个输出(我可以看到 header 中的 Content-Type 设置为 application/json:
{"session":{"token":"3d096c30a00da9ab37019122622dac80edec6db0cf006d5f4450ecd8d813c692"}}
但是,如果我现在尝试使用 XMLHttpRequest
查看 session.token
,如下所示,我会得到 Cannot read property 'token' of undefined
,这告诉我它没有被呈现为 JSON.
let req = new XMLHttpRequest();
req.onload = () => {
console.log(req.responseText.session.token);
console.log(req.responseText['session']['token']);
};
req.open( 'GET', '{{$request->generate( 'web_notifier' )}}' );
req.send();
我做了一个 console.log(req.responseText)
并且可以看到它是字符串格式 - 如果我正确指定了 Content-Type 并使用了 json_encode()
为什么会这样?我该如何解决这个问题?
json 解析不是自动的,您需要将您的响应传递给 JSON.parse(str),我还建议您使用 fetch 而不是 XMLHttpRequest,它具有内置转换。
fetch(url).then(res => res.json()).then(handler)
jsonString = '{"data": "some_data"}'
console.log(JSON.parse(jsonString))