2013-04-09 59 views
0

我正在使用Ajax命令從本地服務器查詢數據,並且需要通過成功處理程序返回JSON對象。使用Ajax成功處理程序返回JSON對象

我阿賈克斯命令如下:

var json = $.ajax({ 
    url: 'http://localhost:9200/wcs/routes/_search', 
    type: 'POST', 
    data: JSON.stringify({ 
     "query": { 
      "match_all": {} 
     } 
    }), 
    dataType: 'json', 
    async: false 
}); 

我想在我已經賦值的變量返回的JSON文件:json

我可以做這樣的事情的命令? (我知道這是不正確的代碼):

success: return(json); 
}); 
+0

就快,我建議你在成功的函數把'json'並確保其不爲空 – chriz 2013-04-09 14:51:47

+0

你應該看看這個問題:http://stackoverflow.com/q/14220321/218196。 – 2013-04-09 15:01:55

回答

1

你接近,

var json; 
$.ajax({ 
    url: 'http://localhost:9200/wcs/routes/_search', 
    type: 'POST', 
    data : 
     JSON.stringify(
      { 
       "query" : { "match_all" : {} } 
     }), 
    dataType : 'json', 
    async: false, 
    success: function(data){ 
     json = data; 
    } 
}) 
console.log(json); 

async: false是一個壞主意,所以我建議使用回調內部JSON。

$.ajax({ 
    url: 'http://localhost:9200/wcs/routes/_search', 
    type: 'POST', 
    data : 
     JSON.stringify(
      { 
       "query" : { "match_all" : {} } 
     }), 
    dataType : 'json', 
    //async: false, 
    success: function(data){ 
     console.log(data); 
    } 
}) 
+0

謝謝Kevin!這完美的作品!如果我可以的話,我會向上箭頭... – 2013-04-09 15:13:04

0

Success期待的,如果請求成功時調用的函數。

你可以這樣做:

var json: 
.... 
.... 

success: function(data){ 
     json = data; 
    } 
}); 
0
var arr = new Array(); 
success: function (data) { 
    $.map(data, function (item) { 
      arr.push({ 
       prop_1: item.prop_1, 
       prop_2: item.prop_2, 
       prop_3: item.prop_3 
      }); 
      }); 
     } 

可以重命名prop_1,prop_2 VS到你的代碼隱藏