Javascript 使用Ajax提交表单
我正在为一个网站制作一个用户脚本,我的目标是在我还没有打开的页面上提交一个表单。如果我从我要提交的表单页面中删除所有不需要的位,那么这就是审查链接的剩余内容:Javascript 使用Ajax提交表单,javascript,jquery,html,ajax,forms,Javascript,Jquery,Html,Ajax,Forms,我正在为一个网站制作一个用户脚本,我的目标是在我还没有打开的页面上提交一个表单。如果我从我要提交的表单页面中删除所有不需要的位,那么这就是审查链接的剩余内容: <form action="http://foo.com/supply/" method="POST" name="supplyContractForm"> <input type="hidden" name="supplyContractData[selected][]" value="2244068"> <
<form action="http://foo.com/supply/" method="POST" name="supplyContractForm">
<input type="hidden" name="supplyContractData[selected][]" value="2244068">
<input type="type" name="supplyContractData[party_quantity][2244068]" value="123">
<input type="text" value="0" name="supplyContractData[quality_constraint_min][2244068]">
<input type="submit" name="applyChanges">
</form>
但是,这不起作用:
$("form").submit();
这也不起作用:
$.post($("form").attr("action"), $("form").serialize())
如何使用Ajax发布此表单,以更改其值
注意:我只能在客户端做一些事情,我只是在做一个用户脚本,而我看不到服务器端代码。这样就可以了 Html,请注意cleaner js的addedd类:
<form action="http://foo.com/supply/" method="POST" name="supplyContractForm">
<input type="hidden" name="supplyContractData[selected][]" value="2244068">
<input class="changer" type="type" name="supplyContractData[party_quantity][2244068]" value="123">
<input type="text" value="0" name="supplyContractData[quality_constraint_min][2244068]">
<input type="submit" name="applyChanges">
</form>
$'form'.submit可能无法工作的原因是,$'form'匹配多个元素,即html中是否有多个表单?如果是这样,请通过添加ID或类使选择器更独特,从而使所选对象成为:
$('#formid').submit();
阿贾克斯
但这并不使用ajax,因此您需要:
var form = $('form');
$.ajax({
url: form.attr('action'),
type: form.attr('method'),
data: form.serialize(),
success: function(){
alert('Form posted via ajax!');
}
});
我将表单代码从页面中取出,并将其放入JSFIDLE中。从那里我做所有的测试。所以,我放置的代码是唯一使用的代码。因此,没有任何其他形式表单“.submit在那里工作,与ajax相同请参见:除了JSFIDLE站点上的课程url之外,它看起来工作正常。但是如果我看一下供应页面,它显示了一些不同的东西。当我按下submit按钮时,supply页面将加载到JSFIDLE结果屏幕中,并且该值将永久更改。永久=如果我刷新,它仍然存在,但是,如果我用ajax尝试同样的事情,什么都没有发生。当我使用$form.submit时,结果屏幕中会加载supply页,但该值不会更改。@XiozZe尝试添加警报$'form'。序列化;在ajax调用之前,您可以看到哪些数据被发送到服务器。我想我们首先要回到。提交:。通常,当我使用.submit时,Ajax并没有那么难。
$('#formid').submit();
var form = $('form');
$.ajax({
url: form.attr('action'),
type: form.attr('method'),
data: form.serialize(),
success: function(){
alert('Form posted via ajax!');
}
});