更新:问题已更改以反映 JSONP 的使用,并且出现了新问题,因此我更改了问题。
背景
- 我需要向 Google 文档表单提交表单
- 不幸的是,对于给定的情况,这是一个硬性要求。
- 我需要创建一个网页作为此表单的更好界面(长话短说:人们将使用 iPad 输入信息,并且它需要谷歌表单默认情况下没有的某些 UI 触摸)。
- 我可以通过 HTML 表单的“动作”进行提交;但是,我需要重写表单提交,以便我可以在客户端执行一些自定义编码器,通过 Ajax 提交表单,然后清除表单以获取新条目。
目标
- 单击提交按钮时,通过 Ajax 提交表单并根据响应的成功或失败执行某些操作。
问题/问题
我在 Chrome 控制台中看到以下错误(省略了表单键);
资源解释为脚本,但使用 MIME 类型 text/html 传输
我怎样才能避免这种情况?有什么方法可以在不触发此问题的情况下将此数据提交到 Google 表单?
到目前为止的代码
HTML页面:
<form id="ss-form" name="googleform" class="pure-form pure-form-aligned">
<!-- Fields omitted for brevity -->
<input type="submit" class="pure-button pure-button-primary" id="btnSubmit" />
</form>
JavaScript:
$(document).ready(function () {
console.log("Document Ready");
disableFormSubmissionEvent();
wireUpSubmitButton();
});
disableFormSubmissionEvent = function () {
console.log("Disabling sumission Event");
$('#ss-form').submit(function () {
return false;
});
wireUpSubmitButton = function () {
console.log("Wiring up submit button");
$("#btnSubmit").click(function () {
submitForm();
});
尝试提交表单的 JavaScript(省略了表单键):
submitForm = function (event) {
console.log("obtaining form data");
var thedata = $('#ss-form').serialize();
console.log("Attempting Form Submission");
var submissionUrl = "https://docs.google.com/forms/d/[...]/formResponse";
$.ajaxSetup({ cache: false });
$.ajax({
type: 'GET',
dataType: 'jsonp',
crossDomain: true,
url: submissionUrl,
data: thedata
}).success(function () {
clearForm();
showSuccessMessage();
}
)
.fail(function (jqXHR, textStatus, errorThrown) {
showFailureMessage(jqXHR, textStatus, errorThrown, submissionUrl);
});