Play1.2.7 中对控制器的 Ajax/Json 请求无法指定内容类型
Posted
技术标签:
【中文标题】Play1.2.7 中对控制器的 Ajax/Json 请求无法指定内容类型【英文标题】:Ajax/Json request to Controller in Play1.2.7 not working specifying content type 【发布时间】:2014-07-14 10:28:33 【问题描述】:我有这个js代码
function sendJSon()
var user = "user_name" : $("#my_input_field").val();
$.ajax(
url: 'http://localhost:9000/myAction',
type: 'POST',
data: JSON.stringify(user),
success: function(result)
$("#my_res_div").html(result);
,
error: function()
alert("error");
);
当传递给应用程序时效果很好,然后按预期继续成功。 但是经过多次尝试后我达到了这个目标,因为在开始时(浏览此站点)我找到了建议同时为 JSON 请求指定内容类型(应用程序/json 或文本/javascript)和数据类型(json)的答案。
如果我指定内容或数据类型,我想知道为什么会得到 XMLHttpRequest cannot load http://localhost:9000/myAction. Invalid HTTP status code 404
。
这是路由文件中的路由行
POST /myAction Application.jsonRequest
【问题讨论】:
【参考方案1】:您引用的错误基本上意味着对 POST 请求的响应是 404 状态,这不是 POST 请求的预期值(您正在发送内容,服务器说它可以是不合逻辑的)找不到该内容)。
通常不需要为$.ajax
指定dataType
字段,因为它会尝试自行解决。但是,这个字段应该不会造成问题,因为它是关于解析响应数据的,它只发生在收到响应之后,并且错误代码首先表明响应错误(意味着它永远不会解析)。
$.ajax
的 contentType
字段对于请求更重要。它是一个由两部分组成的字符串,指定要发送的内容的类型和用于对内容进行编码的字符集。因此,将其设置为您命名的任何一个值的问题在于缺少字符编码。另一个问题是您在指定数据类型的同时没有提供该格式的数据。您正在明确地对内容进行字符串化,这意味着它不会是 JSON 数据。
【讨论】:
谢谢您,先生。你教了我一些有趣的东西,并指出了我的一个大错误/误解。以上是关于Play1.2.7 中对控制器的 Ajax/Json 请求无法指定内容类型的主要内容,如果未能解决你的问题,请参考以下文章