Javascript 使用JSONP使用GAS创建web服务

Javascript 使用JSONP使用GAS创建web服务,javascript,jsonp,Javascript,Jsonp,我有以下代码 var json=callback+'('+Utilities.jsonStringify(range.getValues())+') 返回ContentService.createTextOutput(json).setMimeType(ContentService.MimeType.JAVASCRIPT) 当我从另一个页面调用该应用程序时,会出现以下错误: 拒绝从“/exec?jsonp=callback”执行脚本,因为其MIME类型(“应用程序/json”)不可执行,并且启用

我有以下代码

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

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

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


拒绝从“/exec?jsonp=callback”执行脚本,因为其MIME类型(“应用程序/json”)不可执行,并且启用了严格的MIME类型检查。我如何回避这个问题。生成代码似乎设置了mime类型,但不受尊重。另一方面,我生成一个元素,并将mimetype设置为text/javascript,但这并不能解决问题。

返回JSONP的任何东西都返回了错误的MIME类型。JSONP的正确MIME类型是
application/javascript
,因为它实际上只是javascript代码

下面是JSON和JSONP之间区别的示例:

以下是一些JSON:

{"foo": "bar"}
…这将与MIME类型
application/json
一起提供

以下是用JSONP(也就是说,JavaScript)表示的相同内容:


…它将被适当地用作
应用程序/javascript

刚刚成功,在doGet i返回时:

  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);
  }
});

然后我得到了一个“成功”的结果。这很痛,但很管用。

TJ,我知道,但在气体中,我试过了,它仍然会产生错误
$.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);
  }
});