将JSON从JavaScript发送到Java时出错
我想借助JSON将一些数据从JavaScript发送到Javaservlet。但我有问题 这是我的JavaSript代码:将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
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());
操作,没有任何错误。