Javascript 使用JSONP使用GAS创建web服务
我有以下代码 var json=callback+'('+Utilities.jsonStringify(range.getValues())+') 返回ContentService.createTextOutput(json).setMimeType(ContentService.MimeType.JAVASCRIPT) 当我从另一个页面调用该应用程序时,会出现以下错误: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”)不可执行,并且启用
拒绝从“/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);
}
});