表单与 AppScript 重定向问题(XMLHttpRequest 无法加载)
Form with AppScript redirect issue (XMLHttpRequest cannot load)
我有一个非常基本的HTML <form>
,在操作中调用Google Apps脚本URL,如下所示:https://script.google.com/macros/s/..../exec
。应用脚本会将内容写入 Google 电子表格。我想在执行后将用户重定向回特定页面,这是我使用 jQuery 所做的,但我收到此错误:
XMLHttpRequest 无法加载 https://script.google.com/macros/s/AKfycbwg0ASXLu-2awVG_F02o5S1u1pUyrYNHaAQvxzrObFj-47vFE8/exec。
请求的资源上不存在"访问控制允许源"标头。
因此,不允许访问源"https://gtech-pubu.googlegoro.com"。
下面是整个表单和jQuery。有人告诉我我错过了什么吗?
< script type = 'text/javascript' >
$("#courses").submit(function(event) {
event.preventDefault();
var $form = $(this),
url = $form.attr('action');
var posting = $.post(url, {
name: $('#name').val(),
product: $('#product').val(),
clearness: $('#clearness').val(),
rated: $('#rated').val(),
helpful: $('#helpful').val()
});
posting.done(function(data) {
alert('success');
});
}); < /script>
<form action="https://script.google.com/macros/s/AKfycbwg0ASXLu-2awVG_F02o5S1u1pUyrYNHaAQvxzrObFj-47vFE8/exec" method="post" id="courses">
<h4>Ad Exchange Sell-Side Fundamentals Content Survey</h4>
<fieldset>
<legend><span class="number">1</span> Module Info</legend>
<input type="hidden" name="name" value="TEST Sell-Side Fundamentals">
<input type="hidden" name="product" value="TEST">
<label>Select which module you wish to rate:</label>
<select id="courses" name="clearness">
<option value="extremely_clear">5: Extremely clear</option>
<option value="moderately_clear">4: Moderately clear</option>
<option value="clear_nor_unclear">3: Neither clear, nor unclear</option>
<option value="moderately_unclear">2: Moderately unclear</option>
<option value="extremely_unclear">1: Extremely unclear</option>
</select>
<label>Please rate the clarity of the content:</label>
<select id="courses" name="rated">
<option value="module1">Module 1</option>
<option value="module2">Module 2</option>
<option value="module3">Module 3</option>
<option value="module4">Module 4</option>
<option value="module5">Module 5</option>
<option value="module6">Module 6</option>
<option value="module7">Module 7</option>
<option value="mobule8" selected>Module 8</option>
<option value="module9">Module 9</option>
</select>
</fieldset>
<fieldset>
<legend><span class="number">2</span> Additional Info</legend>
<label>Was this module helpful?</label>
<select name="helpful" id="courses">
<option value="yes">Yes</option>
<option value="no">No</option>
</select>
</fieldset>
<input type="submit" value="Apply" />
</form>
</div>
它是否在我需要配置的应用程序脚本中以允许跨域?
根据文档,您必须使用 JSONP 从 XMLHTTPRequest 中调用脚本...
https://developers.google.com/apps-script/guides/content#serving_jsonp_in_web_pages
尝试将 JSONP 作为最后一个参数传递给 $.post
var posting = $.post( url, {
name: $('#name').val(),
product: $('#product').val(),
clearness: $('#clearness').val(),
rated: $('#rated').val(),
helpful: $('#helpful').val()
}, 'jsonp' );
另外,我不知道您的脚本是什么样子的,但您可能需要添加 MIME 类型......
.setMimeType(ContentService.MimeType.JAVASCRIPT)
就像文档中的示例一样...
return ContentService.createTextOutput(
request.parameters.prefix + '(' + JSON.stringify(result) + ')')
.setMimeType(ContentService.MimeType.JAVASCRIPT);
注意:另外,以防万一您在文档中错过了它...
警告:在脚本中使用此 JSONP 技术时要非常小心。由于任何人都可以在其网页中嵌入脚本标记,因此当您访问恶意网站时,您可能会被诱骗执行脚本,然后可以捕获返回的数据。最佳做法是确保 JSONP 脚本是只读的,并且只返回非敏感信息。
- 如何使用url加载程序在webpack中导入多个图像
- 如何在生成下载文件时显示加载动画
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- 无法在通过jQuery的ajax加载的页面中执行javascript
- Emberjs应用程序加载在除Index之外的所有路由上
- 在chrome.tabs.onCreated之后加载HTML页面
- 单击F5时如何停止页面加载
- HTML5音频加载和播放获胜'我不能在iPad上工作
- 跟踪在页面加载时应用内联样式的JavaScript
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- jQuery Lazy加载动画滚动
- Html页面上的多个Base64图像和平滑加载
- 如何创建带有插槽的vue js组件预加载程序
- Webpack/Rect:遵循egghead.io教程,但出现错误:您可能需要一个合适的加载程序来处理此文件类型
- 如何使该数据在所有元素中加载
- Chrome扩展没有't在重新加载之前考虑期权价值
- 使用javascript在Flash中加载外部图像
- Ajax文件加载和<输入>文件加载
- 使用javascript函数在页面初始化后加载jquery
- 如何防止网页加载后自动启动功能