对Play1.2.7中的Controller的Ajax / Json请求无法指定内容类型

时间:2014-07-14 10:28:33

标签: json playframework-1.x

我有这个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请求指定内容类型(application / json或text / javascript)和数据类型(json)。

我想知道如果我指定内容或数据类型,为什么会得到XMLHttpRequest cannot load http://localhost:9000/myAction. Invalid HTTP status code 404 这是路线文件中的路线

POST    /myAction                           Application.jsonRequest

1 个答案:

答案 0 :(得分:1)

您引用的错误基本上意味着对POST请求的响应是404状态,这不是POST请求的预期值(您发送内容,服务器不合逻辑)说它无法找到内容。

通常不需要为dataType指定$.ajax字段,因为它会尝试自己弄清楚它。但是,这个字段不应该引起问题,因为它是关于解析响应数据的,它只在收到响应后发生,而错误代码首先表示错误的响应(意味着它永远不会解析)。 / p>

contentType的{​​{1}}字段对请求更为重要。它是一个两部分字符串,指定要发送的内容类型和用于编码内容的字符集。因此,将其设置为您命名的任一值的问题在于缺少字符编码。另一个问题是您在指定数据类型的同时不提供该格式的数据。您明确地对内容进行了字符串化,这意味着它不会成为JSON数据。