2017-08-10 15 views
1

HTTPリクエストのJSONレスポンス本体がサーバー側で歪んでいます。それは1つのキーを持ち、その要素は配列です。これは、jQueryのAJAXを使用して、私のHTTPリクエストです:Ajax HTTPリクエストはリクエスト本体の配列を持つJSONを変更します

function dbInsert(event_arr) { 
    $.ajax({ 
     url: "http://localhost:5000/insertdata", 
     type: "POST", 
     data: JSON.stringify(event_arr), 
     success: function(events) { 
      console.log("TestInsert was successfully executed"); 
     }, 
     error: function(textStatus, errorThrown) { 
      console.error("The following error occurred: " + textStatus, errorThrown); 
     } 
    }); 

私はコンソールにJSON.stringify(event_arr)を印刷する場合、これは、それは次のようになります。ここでは、サーバー側で、その後

{"results": [{"event_client": "name1","event_date": "date1"}, {"event_client": "name2", "event_date": "date2"}]} 

私のDBインサート(で呼び出されたJSON.stringifyは())JSONを読み込む方法を台無しにまで思わ

// returns [object, Object], cannot be passed into JSON.parse 
console.log(request.body); 

var temp = JSON.stringify(request.body); 
var temp2 = JSON.parse(temp); 

// prints {"{\"results\":":{"{\"event_name\":\"name1\",\"event_date\":\"date1\"},{\"event_name\":\"name2\",\"event_date\":\"date2\"}":""}} 
console.log(temp); 

// prints { '{"results":': { '{"event_name":"name1","event_date":"date1"},{"event_name":"name2","event_date":"date2"}': '' } } 
console.log(temp2); 

、およびI:レスポンスボディを理解し、JSON形式で遊んで私の様々な試みですドンこの内部フォーマットエラーを回避する方法はありません!

+0

:** 'のcontentType: "アプリケーション/ jsonの"' **、中にあなたの** '$アヤックス({})' **機能とあなたがサーバー側で何を得るか再度確認してください。 –

+0

それはトリックです!そんなに簡単な修正でした。ありがとうございました。 – emilyk

答えて

1

$.ajax({})機能では、contentType: "application/json"を設定する必要があります。このような

何か:あなたが設定する必要が

function dbInsert(event_arr) { 
    $.ajax({ 
    url: "http://localhost:5000/insertdata", 
    type: "POST", 
    data: JSON.stringify(event_arr), 
    contentType: "application/json", 
    success: function(events) { 
     console.log("TestInsert was successfully executed"); 
    }, 
    error: function(textStatus, errorThrown) { 
     console.error("The following error occurred: " + textStatus, errorThrown); 
    } 
    }); 
} 
関連する問題