2017-11-14 18 views
0

POSTリクエストを実行しようとしていて、「Bad Request」エラーが発生しています。誰かが私がここで間違っていることを教えてもらえれば、私は感謝します。JavascriptのPOSTリクエストで不正リクエストエラーが発生する

function mkSentiTopics() { 
    dta['n_clusters'] = 3; 
    $.ajax({ 
     type: "POST", 
     url: "http://saxonydemoubuntu.southcentralus.cloudapp.azure.com/sentitopic", 
     data: JSON.stringify(dta), 
     dataType: "json", 
     contentType: "application/json; charset=utf-8", 
     success: function(response) { 
      alert("success"); 
     }, 
     beforeSend: function() { 

     }, 
     error: function(xhr, stats) { 
      alert("error"); 
     } 
    }); 
} 

「DTAは、」エラーがサーバーに送信されたペイロードの構造は、それが予期するものと一致していないことを示しているので、それはそれを拒否した辞書

// dta["sentis"] is a list of numbers 
// dta["texts"] is a list of strings 
// dta["n_clusters"] is an int. 
+2

いいえ、あなたが送信しているものはAPIが受け入れるものではないため、エラーです。あなたのリクエストが不正であることを伝えるサーバーです。 APIのドキュメントを確認してください。つまり、言語で共通する_list_や_dictionary_のような用語は、JavaScriptではObjectとArrayと呼ばれています。同様に、 'int'もありません。実際に問題が発生している場所である可能性があります:JSON.stringify(dta)を実行したら、渡すタイプが正しいことを確認します(JSONはブール値、配列、オブジェクト、文字列、 = "true" '、' 1!== "1" 'など)。 – msanford

答えて

0

です。 APIシグネチャを知らないので、それを手助けすることはできません。

しかし、私は暗闇の中でショットを取ると、あなたのポストのこの部分に基づいて、次の提案にするつもりです:あなたJSON.stringify(dta)は、出力が正確何と一致していることを確認すると

// dta["sentis"] is a list of numbers 
// dta["texts"] is a list of strings 
// dta["n_clusters"] is an int. 

をJSONはブール値、配列、オブジェクト、文字列、数値のみを知っていて、さらにtrue !== "true"1 !== "1"などということを知っています。

例:

let dta = {     // Note object wrapper 
 
    sentis: [1, 2, 3, 4],  // Note lack of "" 
 
    texts: ["a", "b", "c"], // Note presence of "" 
 
    n_clusters: 5    // 'Naked' number 
 
} 
 

 
console.log(JSON.stringify(dta, 0, 1)); // Note that "dta" is not a root key

あなたのAPIは、 "DTA" ルートキーが存在している、または構造が異なっていること、それに応じてdtaオブジェクトを変更する必要がある場合。

関連する問題