从jQuery.Post获取响应内容类型

有没有办法使用jQuery.Post来发现响应的内容类型?

我在模态窗口中有一个表单,其想法是如果表单无效,则会发送一个HTML片段,并且该片段的内容将替换为此片段,如果它有效,我想要一个包含内容的简单字符串闪光通知(此处使用的类型为SO)。

目前我正在测试返回的字符串是否以“success”开头,如果是,则使用字符串的其余部分作为flash通知。 这显然是一个非常糟糕的解决方案,我真的不喜欢它。

理想情况下,我希望能够对响应有条件,如果它是“text / html”然后插入片段,如果它是“application / JSON”那么我不仅可以为帮助者发送消息,但可能其他数据(消息,id,更具体的成功/失败消息类型等)将有助于将来扩展到其他forms。

jQuery已经根据内容类型标头检测并转换响应 (如果在$.ajax()调用中没有指定type )。 例如: 如果它在内容类型标题中找到"json" ,它将是一个对象 。 你可以这样做:

 $.post("myPage.html", { name: "value" }, function(data) { if(typeof(data) === "string") { //html } else { //JSON } }); 

或者, 始终传回JSON,并将通知消息作为属性,例如:

 $.post("myPage.html", { name: "value" }, function(data) { if(data.notification) { showMessage(data.notification); } else { //use the data object } });