将JSON从JavaScript发送到Java时出错

将JSON从JavaScript发送到Java时出错,java,javascript,jquery,json,servlets,Java,Javascript,Jquery,Json,Servlets,我想借助JSON将一些数据从JavaScript发送到Javaservlet。但我有问题 这是我的JavaSript代码: var myData = {"someNumber":34,"someDate":"May 22, 2014 12:00:00 AM","expiryDate":"May 29, 2014 12:00:00 AM","anotherNumber":3,"customerNumber":56,"name":"John Dow","type":"notype","someSiz

我想借助JSON将一些数据从JavaScript发送到Javaservlet。但我有问题

这是我的JavaSript代码:

var myData = {"someNumber":34,"someDate":"May 22, 2014 12:00:00 AM","expiryDate":"May 29, 2014 12:00:00 AM","anotherNumber":3,"customerNumber":56,"name":"John Dow","type":"notype","someSize":"XXL","noMonth":11,"notes":"some notes here","colour":"Black"};
$.ajax({
            url :           "customerAdd",
            type:           "get",
            data:           {"myData" : JSON.stringify(myData)},
            contentType:    "application/json; charset=utf-8",
            dataType:       "json",
            async:          false,
            success:        function(msg) {
                alert(msg);
            },
            error:          function(jqXHR, textStatus, errorThrown) {
                console.log("jqXHR: " + textStatus);
                console.log("textStatus: " + textStatus);
                console.log("errorThrown: " + errorThrown);
            }
        });
这是我的Java代码:

 public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException{    
        Gson gson = new GsonBuilder().create();
        Customer customer = gson.fromJson(request.getParameter("myData"), Customer.class);
        System.out.println(customer.toString());
    }
结果我在JavaScript中得到一个错误:

"textStatus: parsererror"
"errorThrown: SyntaxError: JSON.parse: unexpected end of data at line 1 column 1 of the JSON data"
我的代码怎么了

附言。 我通过以下方式在JavaScript中创建myData:

var myData = {  
                someNumber:    + $("#someNumber").val(),
                someDate:       $("#someDate").val(),
                expiryDate:     $("#expiryDate").val(),
                anotherNumber:      + $("#anotherNumber").val(),
                customerNumber: + $("#customerNumber").val(),
                name:           $("#name").val(),
                type:           $("#type").val(),
                someSize:        $("#someSize").val(),
                noMonth:        + $("#noMonth").val(),
                notes:          $("#notes").val(),
                colour:         $("#colour").val() };

下面是一个JSON.stringify示例:

JSON.stringify({x: 5, y: 6}); // '{"x":5,"y":6}'
您应该删除参数名称上的引号,或者可以使用javascript对象

您应该这样创建对象:

var myData = new Object();
mydata.someNumber = $("#someNumber").val();
...
编辑:


看起来您试图在ajax调用中获得响应,但是java代码没有响应任何东西,也许您可以尝试调试它。并尝试查看java代码是否被触发?

下面是一个JSON.stringify示例:

JSON.stringify({x: 5, y: 6}); // '{"x":5,"y":6}'
您应该删除参数名称上的引号,或者可以使用javascript对象

您应该这样创建对象:

var myData = new Object();
mydata.someNumber = $("#someNumber").val();
...
编辑:

看起来您试图在ajax调用中获得响应,但是java代码没有响应任何东西,也许您可以尝试调试它。并尝试查看java代码是否被触发?

也许可以尝试一下

JSON.stringify({ "myData" : myData })
也许试试

JSON.stringify({ "myData" : myData })

我发现了我的错误。我不应该放

dataType: "json",
属性,因为我不希望从服务器返回JSON数据。 我刚把它取下来


谢谢李比和托尼的建议。

我发现了我的错误。我不应该放

dataType: "json",
属性,因为我不希望从服务器返回JSON数据。 我刚把它取下来


感谢Lee Bee和Tony的建议。

如果servlet方法没有向ajax返回任何json内容,请删除


数据类型:“json”,来自javascript中的ajax调用。

如果servlet方法没有向ajax返回任何json内容,请删除


数据类型:“json”,来自javascript中的ajax调用。

假设您的myData对象有效,我认为您应该能够做到:$.ajax({url:“customerAdd”,类型:“get”,数据:json.stringify({“myData”:myData}),等等。当您创建myData对象时,有些值有+而有些值没有,您需要这些值吗?我添加了+来生成一个数值。我删除了+但没有帮助。我收到了相同的错误。您是否尝试将数据:{“myData”:JSON.stringify(myData)}更改为数据:JSON.stringify({“myData”:myData}),我将数据更改为
data:JSON.stringify({“myData”:myData})
。结果我认为GET请求变得不正确
http://localhost:8080/customerAdd?{%22myData%22:{%22magicNumber%22:%2234%22,%22someDate%22:%22May%2022,…}
现在我收到另一个错误:
错误抛出:内部服务器错误
。假设您的myData对象有效,我认为您应该能够做到这一点:$.ajax({url:“customerAdd”,type:“get”,data:JSON.stringify({“myData”:myData}),等等。当您创建myData对象时,有些值有+而有些值没有,您需要这些值吗?我添加了+来生成一个数值。我删除了+但没有帮助。我收到了相同的错误。您是否尝试将数据:{“myData”:JSON.stringify(myData)}更改为数据:JSON.stringify({“myData”:myData}),我将数据更改为
data:JSON.stringify({“myData”:myData})
。结果我认为GET请求变得不正确
http://localhost:8080/customerAdd?{%22myData%22:{%22magicNumber%22:%2234%22,%22someDate%22:%22May%2022,…}
现在我收到另一个错误:
错误抛出:内部服务器错误
。我已经按照您的建议创建了我的对象,但不幸的是我收到了相同的错误。新编辑:如果您的java代码是triggeredI,您应该尝试删除success函数原型中的msg属性,但它没有帮助。my java code不响应任何内容,但java代码正确解析接收到的JSON数据并执行
System.out.println(customer.toString());
没有任何错误。我已经按照您的建议创建了我的对象,但不幸的是,我收到了相同的错误。新编辑:如果您的java代码是triggeredI,您应该尝试删除success函数原型中的msg属性。我已经删除了msg属性,但没有任何帮助。我的java代码没有响应任何内容。但是java代码正确解析了接收到JSON数据,并且执行
System.out.println(customer.toString());
操作,没有任何错误。