我试图使用Ajax发送字符串数据,然后使用Java代码从服务器发送回JSON数据。但是每当我尝试运行JavaScript时,它都会提示“Path Finder:error”。使用Ajax将字符串数据发送到Java
当我尝试在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);
}
UPDATA:
我上面的代码更改为下面的东西,它没有正确地调用"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。 – taggon
请寄出'dataToServer()'的回报。 –
dataToServer只是返回一个字符串值,如“2,8”,表示目标ID和源ID。@ taggon,@AlvaroJoao –