Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Ajax提交表单_Javascript_Jquery_Html_Ajax_Forms - Fatal编程技术网

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!');
    }
});