2017-07-29 16 views
0

私はdjango-cors-headersを使用して設定しました。POST要求時のJSON解析エラー

バックエンド:192.168.1.111:8000

フロントエンドのrunserver ジャンゴ1.11 +ジャンゴレストフレームワーク3.6.3

settings.py

ALLOWED_HOSTS = ['*'] 
MIDDLEWARE = [ 
'django.middleware.security.SecurityMiddleware', 
'django.contrib.sessions.middleware.SessionMiddleware', 
'corsheaders.middleware.CorsMiddleware', 
'django.middleware.common.CommonMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware', 
'django.middleware.clickjacking.XFrameOptionsMiddleware', 
] 
CORS_ORIGIN_ALLOW_ALL = True 

Pythonのmanage.py

<!DOCTYPE html> 
<html> 
<head> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
<script> 
$(document).ready(function(){ 
    $("button").click(function(){ 
     $.ajax({url: "http://192.168.1.111:8000/api/user/forgot_password/", 
     type: "post", 
     data: {"email": "[email protected]"}, 
     headers:{"Content-Type":"application/json"}, 
     success: function(result){ 
      $("#div1").html(result); 
     }}); 
    }); 
}); 
</script> 
</head> 
<body> 

<div id="div1"></div> 

<button>Forget Password</button> 

</body> 
</html> 

POST要求と応答に対して400の応答を取得する内容を

{"detail":"JSON parse error - Expecting value: line 1 column 1 (char 0)"} 

私は郵便番号からこのAPIを呼び出すときに正しく動作します。どうすればこの問題を解決できますか?あなたが代わりにヘッダを付加するデータ

data: JSON.stringify("{"email": "[email protected]"}") 

を文字列化されていないよう

答えて

2

あなたはジャバスクリプトのバグを持っているが、あなたのAjax POSTリクエストは手動で

contentType: "application/json" 
2
$.ajax({ 
    url: "http://192.168.1.111:8000/api/user/forgot_password/", 
    type: "POST", 
    data: JSON.stringify({ "email": "[email protected]" }), 
    contentType: 'application/json; charset=utf-8', 
    dataType: 'json', 
    success: function (result) { 
     $("#div1").html(result); 
    }, 
    error: function (xhr, textStatus, errorThrown) { 
    } 
}); 

はこれを試して使用することができひどくフォーマットされて1。

1

あなたが投稿する前に文字列にあなたのJSONに変換しようとすることができます -

JSON.stringify({"email": "[email protected]"}) 
+1

https://stackoverflow.com/help/how-to-answerを見てください。あなたの答えにいくつかの詳細を入力してください。それがなぜ機能していないのか、何を試してみるべきなのか。 – majita