如何在没有 ajax 的情况下发送 POST 请求
Posted
技术标签:
【中文标题】如何在没有 ajax 的情况下发送 POST 请求【英文标题】:How to send a POST Request withou ajax 【发布时间】:2017-09-15 17:02:01 【问题描述】:我需要从表中获取数据,将其分配到一个数组中,然后通过 Json 将其发送到我的 Java 控制器,最后返回一个模型和视图。但是,由于我的控制器返回的是一个页面,所以这个请求不能是 ajax。
我在 $ .post 文档中这样做了:
var orders = new Array();
$("#table-order tbody tr").each(function ()
var col = $(this).children();
if($(this).find('input').is(':checked'))
var order =
'number' : $(col[0]).text(),
'desc' : $(col[1]).text(),
'obs' : $(col[2]).text()
;
orders.push(order);
);
$.post( "sendToPrint", array: JSON.stringify(orders) , function( response )
console.log( response );
, "json");
我的控制器:
@RequestMapping(value="/sendToPrint", method = RequestMethod.POST, consumes = "application/json;charset=UTF-8", produces = "application/json;charset=UTF-8")
@Transactional("productTransactionManager")
public ModelAndView imprimir(@RequestBody String ordens)
ModelAndView mv = new ModelAndView("impressao/impressao");
Gson gson = new Gson();
List<OrdemServico> listaNova = new ArrayList<>();
ArrayList<OrdemServico> listaOrdens = (ArrayList<OrdemServico>) gson.fromJson(ordens, new TypeToken<ArrayList<OrdemServico>>().getType());
for (OrdemServico ordemServico : listaOrdens)
int mes = LocalDateTime.now().getMonthValue();
int ano = LocalDateTime.now().getYear();
int dia = LocalDateTime.now().getDayOfMonth();
LocalDateTime dataHora = LocalDateTime.of(ano, mes, dia, 0, 0, 0);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
String data = dataHora.format(formatter);
ordemServico.setData(data);
listaNova.add(ordemServico);
mv.addObject("lista", listaNova);
return mv;
返回错误:
415(不支持的媒体类型)
【问题讨论】:
Jquery - How to make $.post() use contentType=application/json?的可能重复 “如何在没有 AJAX 的情况下发送 post 请求?” ~ 使用输入框并提交(1990 风格) 不是重复的帖子,因为在我的情况下我不能使用$ ajax 由于我返回模型和视图,我需要一个非 ajax 请求,而且我也不是发送表单而是发送表中的数据。 朋友们有一个大问题,我不能只提交一个表格,因为我只需要发送用户选择的行的数据,而不需要ajax lol 【参考方案1】:您可以使用类似的 javascript 发布您的数据;
var xhr = new XMLHttpRequest();
xhr.open("POST", url , TRUE);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.send(JSON.stringify(value:value));
【讨论】:
【参考方案2】:出现问题是因为您已将 JSON 指定为此控制器将使用的数据类型,并且您在 ajax 调用中传递了不完整的信息。您需要在 ajax 调用中添加必要的标头。他们是:
headers:
'Accept': 'application/json',
'Content-Type': 'application/json'
,
【讨论】:
以上是关于如何在没有 ajax 的情况下发送 POST 请求的主要内容,如果未能解决你的问题,请参考以下文章
我的 jquery AJAX POST 请求无需发送真实性令牌(Rails)即可工作