Java 使用ajax将大型json数据发送到控制器

Java 使用ajax将大型json数据发送到控制器,java,ajax,spring,spring-mvc,Java,Ajax,Spring,Spring Mvc,这是我的JsonExample.jsp文件 <!DOCTYPE html> <html> <title>jQuery Function Demo - jQuery4u.com</title> <head> <script src="http://www.jquery4u.com/function-demos/js/jquery-1.6.

这是我的
JsonExample.jsp
文件

    <!DOCTYPE html>
        <html>
        <title>jQuery Function Demo - jQuery4u.com</title>
        <head>
        <script
            src="http://www.jquery4u.com/function-demos/js/jquery-1.6.4.min.js"></script>
        <script src="http://www.jquery4u.com/scripts/function-demos-script.js"></script>


        <script>
            function call() {

                //var url = 'http://192.168.10.82:8081/formulator-service/tracks?callback_track=processJSON';

                var url = "http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=processJSON&tags=monkey&tagmode=any&format=json";

                $.ajax({
                    type : "GET",
                    url : url,
                    async : false,
                    jsonpCallback : "processJSON",
                    contentType : "application/json",
                    dataType : "jsonp",
                    success : function(json) {

                        alert(json.title);
                        //alert(json.name);

                        controllerCaller(json);

                    },
                    failure : function() {
                        alert("There is some error");
                    }
                });

            }
            function controllerCaller(json) {
                //var dummy = "poiuytre";

                alert("in the Controller caller");
                //var url="/controllerCall";
                $.ajax({
                    type : "POST",
                    url : "controllerCall",
                    async : false,
                    data : {
                        jsondata : json
                    },
                    success : function() {
                        alert("In controller Ajax function");
                    },
                    failure : function(error) {
                        alert("somthing went wrong");
                    }

                });
            }
        </script>


        </head>
        <body>
            <button onclick="call()">Get Json</button>
        </body>
        </html>
package com.web.springmvc.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequestMapping("/")
public class BaseController {

    @RequestMapping(method = RequestMethod.GET)
    public String printHello(ModelMap model) {

        return "Jsonpexample";

    }

    @RequestMapping(value = "/controllerCall", method = RequestMethod.POST, produces = "json/application")
    public @ResponseBody
    String controllerCall(
            @RequestParam(value = "jsondata", required = true) String data) {
        System.out.println("this is in the second function");

        return data;

    }

}

问题是控制器无法接收视图发送的数据。有人能建议一个合适的方法吗?谢谢。

您将其发送到的URL是:“controllerCall”这应该是一个URL,就像您在函数
调用中使用的一样

您说不能发送是什么意思?您是否收到错误?能否尝试将
consumes=“application/json;charset=utf-8”
添加到RequestMapping?问题是我的json数据太长,无法通过get方法发送,因此我必须使用POST方法。但是如果我试图执行这个代码,写在上面。这是正确的。我想要的是使用POST方法,使用GET方法将我接收到的json数据发送到控制器。如果我将controllerCaller函数中的ajax“Type:GET”和“@RequestMapping(value=“/controllerCall)”中的“method=RequestMethod.POST”更改为“method=RequestMethod.GET”,那么上面的简单代码就可以工作了,method=RequestMethod.POST,products=“json/application”)