2017-06-10 13 views
1

あなたはタイトルから問題を見ることができます。ここ は、私が何をすべきかです:AJAX POSTリクエスト後にサーバーからJSONレスポンスを解析する方法はありますか?

$.ajax({ 
    type: "POST", 
    url: "http://www.example.com/api/", 
    data: { 
    'data': '1', 
    'beacon': 'fried' 
    }, 
    complete: function(res) { 
    //need help here... 
    } 
}); 

APIは、エコーないように要求を送信します。私はdocument.forms["myform"].submit(); ページをすれば それでは、どのように私は(値を表示、確認する)を解析する必要があり

{ 
    "data": [{ 
    "Chief": "Max", 
    "temperature": "65", 
    "done": "yes", 
    "cost": 24 
    }] 
} 

のようなJSON応答を示していますか?多くの方法を試しました。

助けていただけたら幸いです!

P.S. jqueryの-3.2.1.min.jsを使用して

答えて

1

使用JSON.parse()そうでなければ、あなたはリクエスト属性にJSONにデータ型を設定することができres.data

+0

警告(res.data ["cost"])エラーが発生した場合 – Khuma

+0

@Khuma 'data'はオブジェクトの配列です。 'alert(res.data [0] [" cost "])' – bassxzero

4

から配列を取得することができ、必要に応じて:

$.ajax({ 
    type: "POST", 
    url: "http://www.example.com/api/", 
    data: {'data': '1', 'beacon': 'fried'}, 
    dataType: 'JSON', 
    complete: function (res) { 
     console.log(res); // will be decoded 
     // acces your values like this : 
     var data = res.responceText.data[0]; 
     alert(data.Chief); 
    } 
}); 

EDIT

特定のデータにアクセスする方法が追加されました。

+0

を他のすべての回答よりもずっと簡単にしてみてください。無効なjson – charlietfl

+3

の内部エラーも処理しますが、これは応答がJSONなら確実です。 –

+0

@AjayDeepakKumarそれを使用する理由はもっとあります...解析エラーがある場合はエラーコールバックに行きます(そして約束を拒否します) – charlietfl

1

あなたは、あなたがJSONデータ内での配列を持っているとして、あなたはRESを使用してアクセスでき

JSON.parse()

を使用する必要がありますJSON.parse()

$.ajax({ 
     type: "POST", 
     url: "http://www.example.com/api/", 
     data: {'data': '1', 'beacon': 'fried'}, 
     complete: function (res) { 
      var response = JSON.parse(res); 
     } 
    }); 
+0

なぜですか? dataTypeでこれを行うと、内部で解析され、有効でない場合はエラーコールバックに行きます。 – charlietfl

+0

@charlietflにも同意しますが、とにかくこの方法でも試しました@ MH2K9私にはエラーがあります – Khuma

1

を試してみてください。 data [0] .costまたはres.data [0] ["cost"]

2

を使用することができますJSON.parse()

$.ajax({ 
    type: "POST", 
    url: "http://www.example.com/api/", 
    data: {'data': '1', 'beacon': 'fried'}, 
    complete: function (res) { 
     var arr = JSON.parse(res).data; 

     arr.forEach(function(obj) { 
      var cost = obj.cost || null, 
       Chief = obj.Chief || null, 
       temperature = obj.temperature || null, 
       done = obj.done || null; 

      console.log('Cost: ' + cost + ', Chief: ' + Chief + ', Temperature:' + temperature + ', Done: ' + done); 
     }); 
    } 
}); 
+0

ありがとう、JSON.parse responseText);それは私が知りませんでした – Khuma

+0

助けてくれれば、喜んで助けてくれてありがとうございました –

-1

最初の問題は、別のドメインからの応答を許可しないため、すべてのコードをapiが置かれているサーバーに転送したことです。

今、このコードは動作します:

$.ajax({ 
    type: "POST", 
    url: "../api/", 
    data: {'data': '1', 'beacon': 'fried'}, 
    dataType: 'JSON', 
    complete: function (res) { 
    console.log(res); 
    var r = JSON.parse(res.responseText); 
    console.log(r.data[0].Chief); //retrieved Alex, that is response from the server 
    } 
}); 

おかげですべてを!

+0

素晴らしいですが、もう一度それを解析する必要はありません。まだデコードされています。 – JazZ

関連する問題