在我的 HTML 中,我有这个按钮:
<button id="download_button">Confirmer</button>
在我的 Js 中我有这个方法:
$("#download_button").click(function() {
downloadMes();
});
downloadMes: function(){
var sources = this.map.getLayers().getArray().map(function(layer){
var source_url = layer.getSource().getUrls()[0];
var layer_name = layer.getSource().getParams()['LAYERS'];
var request = '?VERSION=1.1.0&OUTPUTFORMAT=CSV';
if(_.includes(this.downloadSources, source_url)){
return source_url + request + '&TYPENAME=' + layer_name;
}
},this);
var sourcesToCall = _.compact(sources);
var jsonfile= {json:JSON.stringify(sourcesToCall)};
$.ajax({
type:'POST',
url: "/downloadCSV",
data: jsonfile,
dataType: "json"
});
}
我已经创建了一个 Spring Controller --> DownloadCSVController :
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
public class DownloadCSVController {
@RequestMapping(value = "/downloadCSV", method = RequestMethod.GET)
public void getCSV(HttpServletRequest request, HttpServletResponse response, ModelMap model) throws IOException{
System.out.println("DEBUT TELECHARGEMENT");
// SOME LOGIC
System.out.println("FIN TELECHARGEMENT");
}
}
当我点击按钮时出现此错误:
POST http://localhost:8080/downloadCSV 404 (Introuvable)
出了什么问题?
最佳答案
将 ajax 调用更改为 GET 方法,如下所示
$.ajax({
type:'GEt',
url: "/downloadCSV",
data: jsonfile,
dataType: "json"
});
或者将 spring Controller 方法更改为 post
@RequestMapping(value = "/downloadCSV", method = RequestMethod.POST)
public void getCSV(HttpServletRequest request, HttpServletResponse response, ModelMap model) throws IOException{
System.out.println("DEBUT TELECHARGEMENT");
// SOME LOGIC
System.out.println("FIN TELECHARGEMENT");
}
PS:如果您的项目有一些根文件夹,并且基于调度程序 servlet url 映射,在请求类似 localhost:8080/yourproject/downloadCSV 时也指定了其名称
关于javascript - 我的调用 Spring Controller 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39385622/