2017-12-07 11 views
0

AJAX POSTを使用してデータを送信しています。データはJSON形式です。下記参照。しかし、「予期しないトークンがJSONの0の位置にあります」が続きます。なぜこうなった?ここでcontentTypeを設定するのは、ブール値フィールドcheckedが文字列に変換されないためです。contentTypeをapplication/jsonに設定すると、指定されていないトークンエラーが発生する

var data = { 
    "user": "tom", 
    "number": 9, 
    "checked": false 
} 

$.ajax({ 
    url: url, 
    method: "POST", 
    data: data, 
    contentType: 'application/json', 
    dataType: 'json', 
    beforeSend: function (xhr) { 
     xhr.setRequestHeader ("Authorization", "Basic " + btoa(username + ":" + password)); 
    }, 
    success: function (success) { 
     console.log("success"); 
    } 
}); 
+0

どこでエラーが発生しますか? javascriptが実行されたとき、または回答を受け取ったとき? –

+0

@LioraHaydont以前は 'contentType: 'application/json''がなく、バックエンドは文字列のようにブール値を扱っていたので、この問題を避けるために設定する必要があります。私がやったことは、バックエンドサーバに送られることさえありません。 – b11

答えて

1

あなたがcontentType: 'application/json',を使用するときは、データを自分で文字列化する必要があります。応答の問題のように思えるのエラーについては

data: JSON.stringify(data), 

。ブラウザの開発ツールのネットワークで実際の要求を調べ、実際に返信本体に含まれているものを確認してください

+0

サーバは 'user = tom&number = 9 'としてデータを受信して​​いるので、引用されたエラーはサーバ側で起こります(そして、おそらく応答に含まれます) = false'であるので、リクエスト本体の最初の文字は「user」の「u」であり、明らかにJSONとして解析できません。 – nnnnnn

+0

これで解決しました! – b11

関連する問題