2016-08-30 6 views
2

私は取得したjsonを表示し、ajaxの成功関数で解析しています。私は、データの結果はからJSONであることを期待ajaxの成功関数を使用してparse jsonを実行します。

{ 

"results": [ 
{ 
    "DocId": 2204, 
    "Title": "Lorem ipsum dolor sit amet, consectetur", 
    "Locations": [ 
     { 
      "State": "New York", 
      "City": "" 
     }, 
     { 
      "State": "New York", 
      "City": "New York City" 
     } 
    ], 
    "Topics": [ 
     3, 
     7, 
     11 
    ], 
    "PublicationYear": "2011", 
    "Organization": "New Yorks Times", 
    "WebLocation": "www.google.com", 
    "Description": "Lorem Ipsum" 
} 
], 
"TotalMatches": 1 

} 

アヤックス:

data = "Title=" + $("#Title").val() + "&geography=" + $("#geography").val(); 
alert(data); 


url= "/portal/getResults.php"; 

$.ajax({ 
     url: url, 

     type: "POST", 
     //pass the data 
     data: data, 
     dataType: 'json', 

     cache: false, 
     //success 
     success: function(data) { 

       alert(data); 

     } 
    }); 

getResults.php(JSON出力)私は今のところ持って

getResults.phpではなく、[object Object]を取得します。

私はまた、以下のコードを試みたが、応答がないています

success: function(data) { 
       var json1 = JSON.parse(data); 
       alert(json1); 
     } 
+1

try 'JSON.stringify(data)' – depperm

+2

あなたはオブジェクトを受け取ります。 'alert()'を使ってそれを表示すると、文字列に変換されます。デフォルトは '[object Object]'です。代わりに 'console.log()'を試して、実際のオブジェクトを見てください。 – Sirko

+2

jQueryは既にデータをデシリアライズしていますので、 'JSON.parse'を使う必要はありません。 '[object Object]'が表示される理由は 'alert()'を使ってそれを表示しているからです - これはすべての型を文字列に変換します。代わりに 'console.log'を使用してください –

答えて

1

あなたがdataType:'json'をしたいというのjQueryを言っていることから、Ajaxの機能は、あなたのためのオブジェクトにJSONレスポンスを解析します。表示される結果オブジェクトは、サーバーからのJSON応答と一致するデータを持つオブジェクトである必要があります。文字列のバージョンが必要な場合はJSON.stringify()を試してください。それ以外の場合はオブジェクトをそのまま使用してください:data['results'][0]['DocId']など

幸運!ここで

0

リクエストの例です:http://jsfiddle.net/5y5ea98n/

var echo = function(dataPass) { 
    $.ajax({ 
     type: "POST", 
     url: "/echo/json/", 
     data: dataPass, 
     cache: false, 
     success: function(json) { 
      alert(JSON.stringify(json)); 
     } 
    }); 
}; 

$('.list').live('click', function() { 
    $.get("http://www.json-generator.com/api/json/get/bQxORzxQGG?indent=2", function(data) { 
     var json = { 
      json: JSON.stringify(data), 
      delay: 1 
     }; 
     echo(json); 
    }); 
}); 
0

私はこれに関連し、それが正常に働いていたいくつかのコードを試してみました。

function ajaxToParseJson(){ 
AUI().use('aui-io-request', function(A){ 
    A.io.request('${jsonAjaxURL}', { 
      dataType:'json', 
      method: 'post', 
      data: { 
       execute: 'JsonLogic', 
       numberVal:'Pass Json String Here if needed from Screen' 
      }, 
      on: { 
        success: function() 
        { 
         var empName = this.get('responseData').name; 
         var id = this.get('responseData').id; 
         console.log("Name: "+empName); 
         console.log("Id: "+id); 
        /** Since return type of this function is bydefault Json it will return Json still if you want to check string below is the way**/ 
        var data = JSON.stringify(this.get('responseData')); 
        alert(data); 
        } 
       } 
     }); 

}); 

}

私は2つのフィールドID、名前で従業員クラスを持っています。

関連する問題