有人能举例说明如何使用contents
属性吗?
$.ajax(
{
contents : {...}
}
jQuery自己的文档仅说明以下内容:
内容
An object of string/regular-expression pairs that determine how jQuery will parse the response, given its content type
答案 0 :(得分:6)
来自http://api.jquery.com/jQuery.ajax/:
$ .ajax()转换器支持将数据类型映射到其他数据类型。但是,如果要将自定义数据类型映射到已知类型(例如json),则必须使用contents选项在响应Content-Type和实际数据类型之间添加对应关系:
$.ajaxSetup({
contents: {
mycustomtype: /mycustomtype/
},
converters: {
"mycustomtype json": function ( result ) {
// do stuff
return newresult;
}
}
});
那么,这意味着您的服务器响应的数据类型可能是mycustomtype
。当AJAX调用收到数据时,它会看到它的数据类型是mycustomtype
并且匹配我们设置的正则表达式(在内容中):/mycustomtype/
并抛出将数据导入我们指定的转换器,例如。 mycustomtype json()
将尝试将数据转换为json。
详细说明转换器 :
converters["mycustomtype json"]
表示当您要将mycustomtype
转换为json
格式时,将执行此处指定的函数,因此该函数的内容将执行将返回的解析{ {1}}。
您可以指定其他转换类型,例如
JSON
你会编写自己的转换器函数:
converters: {
"mycustomtype json": converterFromCustomTypeToJson, // mycustomtype -> json
"mycustomtype jsonp": converterFromCustomTypeToJsonP, // mycustomtype -> jsonp
"mycustomtype text": converterFromCustomTypeToText, // mycustomtype -> text
"text mycustomtype": converterFromTextToCustomType // text -> mycustomtype
}
您还希望避免弄乱默认转换器,它们是:
var converterFromCustomTypeToJson = function(result) {
var jsonResult = ...
/* do conversion to JSON */
return jsonResult;
},
converterFromCustomTypeToJsonP = function(result) {
var jsonPResult = ...
/* do conversion to JSONP */
return jsonPResult;
},
converterFromCustomTypeToText = function(result) {
var textResult = ...
/* do conversion to text */
return textResult;
},
converterFromTextToCustomType = function(result) {
var customResult = ...
/* do conversion to mycustomtype */
return customResult;
};
答案 1 :(得分:3)
contents
用于定义新的dataTypes。 jQuery中定义了4种默认数据类型:xml,json,script和html。如果没有为ajax调用指定dqataType,jQuery将尝试根据响应的MIME类型推断它。使用contents
定义新数据类型时,需要指定正则表达式,该表达式将用于从响应的MIME类型推断自定义dataType。
对于ex来定义CSV dataType,否则将其解析为text:
$.ajaxSetup({
// for: text/csv or application/csv
contents: {
csv: /csv/
}
});
contents
与转换器一起使用:
将csv转换为json定义自定义转换器:
$.ajaxSetup({
contents: {
csv: /csv/
},
converters: {
"csv json": function (result) {
// parse csv here
return jsonresult;
}
}
});