从Chrome扩展到Meteor托管网站的XHR不一致(meteor.com)
Inconsistent XHR from Chrome Extension to Meteor-hosted website (meteor.com)
我有一个谷歌浏览器扩展程序(浏览器操作(,它将弹出表单输入发送到我的Meteor网站/应用程序数据库。(基于从谷歌浏览器扩展程序登录流星应用程序。
弹出窗口中的 XHR 代码.js:
$(document).ready(function() {
$('#form').on('click','#submitForm',function () {
var xhr = new XMLHttpRequest();
var data = {
"field1": $('#input1').val(),
"field2":$('#input2').val(),
};
xhr.open("POST", "http://MYAPPNAME.meteor.com/extension/post", true);
xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
xhr.send(JSON.stringify(data));
});
});
该代码非常零星地工作。通常在第四次尝试时(即四次提交表格(。
是什么导致了这种不一致?它只是 meteor.com 上缓慢免费托管的一个方面吗?我可能会切换到自定义域(在付费服务器上(,但理想情况下希望在付款前确保功能。
编辑
根据Xan的建议,我为XHR错误(从 https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest 开始(添加了事件侦听器。
xhr.addEventListener("progress", updateProgress, false);
xhr.addEventListener("load", transferComplete, false);
xhr.addEventListener("error", transferFailed, false);
xhr.addEventListener("abort", transferCanceled, false);
现在每次,都会出现"中止"(传输已取消(警报。但是,数据仍然偶尔会正确发送(即使有错误警报(。
这有什么意义吗?有没有更好的方法来提醒错误?
我猜请求已中止,因为表单已提交。尝试取消单击处理程序中的默认操作(表单提交(:
$('#form').on('click', '#submitForm', function(event) {
event.preventDefault();
....
});
您可能希望改用窗体的 submit
事件。这允许用户按 Enter 键提交表单,而不是单击按钮:
$('#form').on('submit', function(event) {
event.preventDefault();
....
});
相关文章:
- 当属性不一致时,如何根据属性对JS对象列表进行排序
- Android和JavaScript解析API之间不一致
- Javascript的行为与PHP包含文件不一致
- 对这种与document.domain和CORS相关的不一致行为的解释是什么
- 点击链接行为不一致
- Passport.js`isAuthenticated()`不一致的行为;当它应该是真的时候是假的
- 与显示不一致
- Ext 4.2.1 模型日期解析在浏览器之间不一致
- 通过 Dropbox API 上传时的文件内容不一致
- JavaScript - 对象属性不一致
- Javascript 混淆了 null、instanceof 和 typeof 的语法不一致
- localeCompare 显示使用前导变音字符对单词进行排序时不一致的行为
- SVG 对象部分上的 JQuery click() 不一致
- 使用forEach和.shift()时结果不一致
- Window.open浏览器的高度不一致
- 不同浏览器中的LinkButton PageMethod行为不一致
- 当活动处于后台时,Android WebView不一致
- 使用正则表达式删除标记时,Firefox和Chrome之间存在不一致
- JQuery更改在浏览器之间的行为不一致
- 从Chrome扩展到Meteor托管网站的XHR不一致(meteor.com)