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

Inconsistent XHR from Chrome Extension to Meteor-hosted website (meteor.com)

本文关键字:不一致 XHR meteor com 网站 扩展到 Chrome Meteor      更新时间:2023-09-26

我有一个谷歌浏览器扩展程序(浏览器操作(,它将弹出表单输入发送到我的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();
    ....
});