【发布时间】:2015-11-05 19:32:12
【问题描述】:
我尝试使用 Ajax 发送字符串数据,然后使用 Java 代码从服务器发回 JSON 数据。但是每次当我尝试运行 javascript 时,它都会提示“路径查找器:错误”。
当我尝试在 java 中的“return”行中设置断点时,它不起作用,所以我猜是请求内容有问题。
但是当我使用 POSTMAN 测试数据时,它可以工作! (如图所示)。 谁能帮我解决这个问题?千恩万谢 !!
JavaScript:targetpaths.js
var serviceURL = "http://localhost:8080/TransportationNetwork/rest/paths";
$('#findPaths').click(function() {
getPaths();
});
function getPaths() {
console.log('display paths');
$.ajax({
type:'POST',
contentType:'application/json', //data type sent to server
url: serviceURL,
dataType:"json", // data type get back from server
data: dataToServer(), //data sent to server
success: function(data, textStatus, jqXHR){
alert('Path created successfully');
},
error: function(jqXHR, textStatus, errorThrown){
alert('Path Finder : ' + textStatus);
}
});
}
function dataToServer() {
var array = "";
var str1 = $('#source').val();
var str2 = $('#target').val();
array = str1 + "," + str2;
return array;
}
<!DOCTYPE html>
HTML:
<head>
<title>Path Finder</title>
</head>
<body>
<div style="padding-left:100px;font-family: monospace;">
<h2>Path Finder</h2>
<div style="width: 200px; text-align: left;">
<div style="padding:10px;">
Source Node: <input id="source" name="source" />
</div>
<div style="padding:10px;">
Target Node: <input id="target" name="target" />
</div>
<div style="padding:10px;text-align:center">
<button id="findPaths">Find Paths</button>
</div>
</div>
<ul id="paths"></ul>
</div>
<p id="demo"></p>
<script src="js/jquery-1.11.3.min.js"></script>
<script src="js/targetpaths.js"></script>
Java 代码:
@Path("/paths")
public class PathsResource {
PathDao pathDao;
public PathsResource() {
pathDao = new PathDao();
}
@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes("text/plain")
public List<DirectedEdge> pathsInfo(@QueryParam("st") String st) {
System.out.println("Searching paths : " + st);
return pathDao.getEdgeList(st);
}
更新数据:
我将上面的代码更改为下面的内容,它确实正确调用了 "System.out.println("Searching paths : " + st);"
。
但是,浏览器仍然给我发送错误提示,我不知道如何解决这个问题,是不是因为它没有返回正确的JSON 格式?但是为什么我可以在 POSTMAN 中看到返回的数据是正确的???救命啊!!!
JAVA:
@GET
@Produces(MediaType.APPLICATION_JSON)
public List<DirectedEdge> pathsInfo(@QueryParam("st") String st) {
System.out.println("Searching paths : " + st);
return pathDao.getEdgeList(st);
}
JAVASCRIPT:
var serviceURL = "http://localhost:8080/TransportationNetwork/rest/paths";
function dataToServer() {
var array = "";
str1 = $('#source').val();
str2 = $('#target').val();
array = str1 + "," + str2;
return array;
}
$('#findPaths').click(function() {
getPaths();
});
function getPaths() {
console.log('display paths');
$.ajax({
type:'GET',
url: serviceURL,
dataType:"json", // data type get back from server
data:"st=" + dataToServer(), //data sent to server
success: function(data){
alert('Path created successfully');
},
error: function(jqXHR, textStatus, errorThrown){
alert('Path Finder : ' + textStatus);
}
});
}
【问题讨论】:
-
dataToServer()返回的字符串是什么?它看起来像无效的 JSON。 -
请回复
dataToServer()。 -
dataToServer 只返回一个类似 "2,8" 的字符串值,表示目标 id 和源 id.@taggon ,@AlvaroJoao
-
即使我更改了@consume("text/plain"),它也不起作用。 @taggon
标签: javascript java jquery ajax