6

谁能给我一个如何使用该contents物业的例子?

$.ajax(
{
   contents : {...}
}

jQuery 自己的文档仅说明了以下内容:

内容

An object of string/regular-expression pairs that determine how jQuery will parse the response, given its content type

4

2 回答 2

6

来自http://api.jquery.com/jQuery.ajax/

$.ajax() 转换器支持将数据类型映射到其他数据类型。但是,如果您想将自定义数据类型映射到已知类型(例如 json),则必须使用 content 选项在响应 Content-Type 和实际数据类型之间添加对应关系:

$.ajaxSetup({
  contents: {
    mycustomtype: /mycustomtype/
  },
  converters: {
    "mycustomtype json": function ( result ) {
      // do stuff
      return newresult;
    }
  }
});

所以,这意味着您的服务器响应的数据类型可能是mycustomtype. 当 AJAX 调用接收到数据时,它会看到它的数据类型是mycustomtype并且匹配我们设置的正则表达式(在contents中):/mycustomtype/并将数据扔到我们指定的转换器中,例如。mycustomtype json()将尝试将数据转换为 json。

详细说明转换器

converters["mycustomtype json"]意味着这里指定的函数将在您要转换mycustomtypejson格式时执行,因此该函数的内容将执行将返回的解析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;
    };

您还希望避免弄乱默认转换器,它们是:

{
    "* text": window.String, 
    "text html": true, 
    "text json": jQuery.parseJSON, 
    "text xml": jQuery.parseXML
}
于 2013-04-02T09:35:42.273 回答
3

contents用于定义新的数据类型。jQuery 中定义了 4 种默认数据类型:xml、json、script 和 html。如果没有为 ajax 调用指定 dqataType,jQuery 将尝试根据响应的 MIME 类型来推断它。使用 定义新数据类型时contents,需要指定正则表达式,该表达式将用于从响应的 MIME 类型推断自定义数据类型。

例如,定义一个 CSV 数据类型,否则将被解析为文本:

$.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;
    }
  }
});
于 2013-04-02T10:09:55.903 回答