Javascript Chrome扩展到Meteor托管网站(Meteor.com)的XHR不一致

Javascript Chrome扩展到Meteor托管网站(Meteor.com)的XHR不一致,javascript,google-chrome-extension,meteor,xmlhttprequest,Javascript,Google Chrome Extension,Meteor,Xmlhttprequest,我有一个Google Chrome扩展(浏览器操作),它将弹出表单输入发送到我的Meteor网站/应用程序数据库。(基于) popup.js上的XHR代码: $(document).ready(function() { $('#form').on('click','#submitForm',function () { var xhr = new XMLHttpRequest(); var data = { "field1": $('#in

我有一个Google Chrome扩展(浏览器操作),它将弹出表单输入发送到我的Meteor网站/应用程序数据库。(基于)

popup.js上的XHR代码:

$(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错误(从)添加了事件侦听器

xhr.addEventListener("progress", updateProgress, false);
xhr.addEventListener("load", transferComplete, false);
xhr.addEventListener("error", transferFailed, false);
xhr.addEventListener("abort", transferCanceled, false);
现在,每次都会出现“中止”(TransferCancelled)警报。但是,偶尔仍会正确发送数据(即使出现错误警报)


这有什么意义吗?是否有更好的方法来提醒错误?

我猜请求会因为表单已提交而中止。尝试取消单击处理程序中的默认操作(表单提交):

$('#表单')。在('click','#submitForm',函数(事件){
event.preventDefault();
....
});
您可能希望使用表单的
submit
事件。这允许用户按Enter键提交表单,而不是单击按钮:

$('#表单')。在('submit',函数(事件){
event.preventDefault();
....
});

对于发送JSON而不是像
field1=value1&field2=value2这样的“正常”URL参数,我总是相当怀疑。你试过了吗?给XHR上的错误添加一个侦听器,如果可能的话,检查服务器日志。没有这些信息很难诊断。@Xan添加了监听器。请参见上面的编辑。无法访问服务器日志,但将改为尝试localhost.Presto。只需要添加
event.preventDefault()