![](/img/trans.png)
[英]ajax error: Resource interpreted as Script but transferred with MIME type text/json:
[英]$.ajax form submit to Google Docs using JSONP: “Resource interpreted as Script but transferred with MIME type text/html”
更新:问题已更改以反映对JSONP的使用,并且出现了新问题,因此我更改了问题。
我在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);
});
Google doc响应返回一个html页面,因此没有json / jsonp,它是跨域的。 我的建议是在您的网站上建立一个代理,该代理将提交给Google文档并返回json
这是一种抑制错误的方法,尽管在某些浏览器中您仍会收到一条警告记录到控制台(尽管没有错误!)。
加载图像,而不是执行JSONP请求,这是我用来记录用户提供给Google表单的电子邮件地址的示例:
var src = '//docs.google.com/a/MY_GOOGLE_DOCS_DOMAIN/forms/d/FORM_IDENT/formResponse?entry.INPUT_ID=' + encodeURI(emailAddress);
window.email_submit_beacon = $('<img/>', {
'src':src
});
我不确定100%是否需要window.email_submit_beacon分配,但是我认为最好强制浏览器将图像保留在内存中,以便在图像请求完成之前不将其卸载。
另请注意,我正在使用自定义域,对于您来说,URL可能就是您发布的URL: https : //docs.google.com/forms/d/FORM_IDENT/formResponse
如果您想知道请求何时完成,可以只查看图像何时加载(这类似于使用JS进行图像预加载的方式)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.