Javascript Chrome扩展到Meteor托管网站(Meteor.com)的XHR不一致
我有一个Google Chrome扩展(浏览器操作),它将弹出表单输入发送到我的Meteor网站/应用程序数据库。(基于) popup.js上的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
$(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()代码>