[英]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'];
});
但是,當我返回apiKey時,javascript中的警報顯示123123,但其他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
)可以正常工作,因為它們是數字並且不需要雙引號。
進一步閱讀: MDN的JSON.parse()文檔 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.