0

我正在尝试使用 JSON 将一些数据从控制器发送到 Spring MVC 中的视图,这是控制器中的代码:

@RequestMapping(value="/twitter/searchgeomap", method=RequestMethod.GET)
public String TwitterSearchGeoJSON(@RequestParam("query") String query) throws TwitterException {
    List<Status> tweets = twitterService.twitterSearchGeo(query);
    List<String> geoList = new ArrayList<String>();
    JSONObject json = new JSONObject();

    for (Status tweet : tweets) {
        GeoLocation geo = tweet.getGeoLocation();
        String Latitude = String.valueOf(geo.getLatitude());
        String longitude = String.valueOf(geo.getLongitude());
        String text = tweet.getText();
        String place = tweet.getPlace().toString();

        geoList.add(text);
        geoList.add(Latitude);
        geoList.add(longitude);
        geoList.add(place);

        String key = String.valueOf(tweet.getId());
        json.accumulate(key, geoList);
    }

    return json.toString();
}

以下是我阅读 JSON 的方式:

$(document).ready(function() {
       $.getJSON("searchgeomap?query=obama", function(data){

            console.log("hi");
        });

});

第一个问题是如何设置参数(查询),这样我就不需要将它放入请求“searchgeomap?query=obama”中?另一个问题是它console.log("hi");不起作用,我在控制台中看不到输出,为什么函数内部没有任何东西被执行?我究竟做错了什么?

4

2 回答 2

1

第一个问题很好..您可以将数据作为对象提供

$.getJSON("searchgeomap",{query:"obama"}, function(data){
        //--^^url--------^^---object

        console.log("hi");
 });

对于您的第二个问题..您在此处使用的网址是否在同一个域中.. 看起来您正在调用 twitter 函数.. 无论如何,如果是,那么您需要查看 ajax jsonp 否则它将无法正常工作

于 2013-07-23T20:08:07.400 回答
1

我认为您的控制器签名中缺少 @ResponseBody 注释,就像这样

public @ResponseBody String TwitterSearchGeoJSON(@RequestParam("query") String query) throws TwitterException
于 2013-07-23T21:03:37.023 回答