使用JSONP使用GAS创建Web服务

我有以下代码。

var json = callback +'('+ Utilities.jsonStringify(range.getValues())+')';

返回ContentService.createTextOutput(json).setMimeType(ContentService.MimeType.JAVASCRIPT);

当我从另一个页面调用该应用程序时,出现以下错误:

拒绝执行来自'https://script.google.com/macros/s//exec?jsonp=callback'的脚本,因为其MIME类型('application / json')不可执行,并且启用严格的MIME类型检查。 我如何解决这个问题。 它看起来像生成代码设置MIME类型,但它没有被尊重。 另一方面,我生成一个元素,并将mimetype设置为text / javascript,但这并没有解决它。


只是设法让它,在doGet我回报:

  return ContentService.createTextOutput(
    'on_result(' + JSON.stringify({hello:1}) + ')')
    .setMimeType(ContentService.MimeType.JAVASCRIPT);

并在jQuery方面我做

$.ajax({
  url: "YOUR_SCRIPT_URL",
  type: "GET",
  dataType: "jsonp",
  crossDomain: true,
  jsonpCallback: "on_result",
  success: function() {
    return console.log(arguments);
  },
  error: function() {
    return console.error(arguments);
  }
});

然后我得到一个“成功”的结果。 它伤害,但它的作品。


无论返回什么,您的JSONP都会返回错误的MIME类型。 JSONP的正确MIME类型是application/javascript ,因为它实际上只是JavaScript代码。

以下是JSON和JSONP之间区别的例子:

这里有一些JSON:

{"foo": "bar"}

...将适用于MIME类型application/json

这里用JSONP(也就是说JavaScript)表达同样的东西:

someCallbackName({"foo": "bar"})

...将适当地作为application/javascript

链接地址: http://www.djcxy.com/p/47597.html

上一篇: Creating web service with GAS using JSONP

下一篇: domain endpoint with jQuery AJAX