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

问题描述:

使用jQuery.Post发现响应的内容类型有什么方法吗?从jQuery.Post获取响应内容类型

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

目前我正在测试返回的字符串是否以“success”开头,如果是这样,则使用字符串的其余部分作为Flash通知。这显然是一个很难解决的问题,我真的不喜欢它。

理想情况下,我希望能够有条件的响应,如果它是“文本/ HTML”,然后插入片段,如果它是“应用程序/ JSON”,那么我不能只发送消息帮助者,但潜在的其他数据(消息,ID,更具体类型的成功/失败消息等),这将有助于将来扩展到其他形式。

jQuery将已经detect and convert the response based on the content type header(如果在$.ajax()调用中没有指定type)。例如:if it finds "json" in the content-type header, it'll be an object。你可以这样做:

$.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 
    } 
}); 
+1

Urgh的typeof,当然要归功于为答案。 – Chao 2010-10-29 14:16:05

+0

实际上'type'是'method'的别名。 你的意思是'dataType'我猜... – DUzun 2015-07-13 10:57:54