我将JS从iOS应用程序注入到Web应用程序中。我控制两者的代码。我正在尝试编写从条形码扫描器获取输入的javascript,然后将其放入Web表单然后提交表单。我使用jQuery.form插件制作所有表单ajax。我使用ajaxForm。
我想尽可能使代码尽可能通用,以防我改变前端代码(例如删除ajaxForm)。我的目标是简单地有一组id,当它与id匹配时,改变输入的值,然后提交表单。这种形式可以是ajax或常规形式;但iOS应用程序不应该知道实现细节。有没有办法在vanilla js中做到这一点?
var scan_ids = ['item','search'];
for(var k=0;k<scan_ids.length;k++)
{
var scan_id = scan_ids[k];
if (document.getElementById(scan_id))
{
document.getElementById(scan_id).value = "[SCAN]";
if (scan_id == "item")
{
/*I don't want to do this as I am bound to ajaxSubmit;
I would rather trigger a form submit and have it use ajaxForm
that is bound to it. If I do .submit() it ignores the ajaxForm */
$('#add_item_form').ajaxSubmit({target: "#register_container", beforeSubmit: salesBeforeSubmit, success:itemScannedSuccess});
$('#add_item_form').submit(); //(WORKS and submits via ajax)
document.getElementById('add_item_form').submit(); //(SUBMITS; DOES NOT AJAX)
}
break;
}
}
答案 0 :(得分:7)
要使用vanilla / plain JS提交表单,只需在表单上调用submit
方法:
document.getElementById('formId').submit();
然而,听起来你想要发出一个AJAX请求。这些与标准HTTP请求不同。它们被称为XMLHttp Requests。
使用普通HTTP请求提交表单时(使用form.submit()
时会发生什么情况),浏览器使用{{1}内的信息填充发送到服务器的POST / GET变量正在发送。
发送XMLHttp请求时,不会为您完成这项工作。你必须自己做。
据我所知,这是jQuery.form正在做的大部分内容。它正在收集表单中的信息,填充XMLHttp请求,然后使用所谓的AJAX技术将表单提交到服务器。
您可能会发现this回答有用;有人编写了一个简单的Javascript方法,用于通过AJAX提交表单。以下是该答案的方法:
<form>
值得注意的是,此代码的原始海报使用的方法不适用于某些旧版浏览器。特别是不支持ECMAScript 5实现的浏览器。
我的建议是坚持使用你已有的插件。我看不出重新发明轮子的理由。请放心,您的jQuery库正在使用vanilla Javascript。