2014-02-25 239 views
0

我正在爲網站製作用戶腳本,我的目標是在未打開的頁面上提交表單。如果我要從具備,我想提交表單的頁面所有不需要的位,這是什麼是左(審查的鏈接):使用Ajax提交表單

<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> 

這是所有關於第三行:「價值=「123 「」。 我想將該值更改爲「222」。 我該怎麼做:我將輸入值從「123」更改爲「222」,我按下提交按鈕,表單提交:頁面重新加載,顯示的值爲「222」。 正如我所願。

現在,這是所有手動,我想它腳本。

這工作:

$("input:submit").click(); 

然而,這不起作用:

$("form").submit(); 

這不工作之一:

$.post($("form").attr("action"), $("form").serialize()) 

我怎樣才能發佈此表使用Ajax,以某種方式我可以從http://foo.com/main/更改值?

注:我只能做客戶端的事情,我只是做一個用戶腳本,而我看不到服務器端代碼。

回答

-1

這會做的伎倆

的Html,注意addedd類清潔劑JS:

<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> 

JS:。

$('form input.changer').val('222'); 
$('input:submit').click(); 

之所以$( '形式')提交()可能不起作用,因爲$('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!'); 
    } 
}); 
+0

爲什麼downvote?謹慎評論? – Xeli

+0

我將表單代碼從頁面中提出,並將其放入jsfiddle中。從那裏我做所有的測試。所以,我放置的代碼是唯一使用的代碼。因此,沒有任何其他形式。 http://jsfiddle.net/XiozZe/nMgF9/ – XiozZe

+0

$('form')。submit()在那裏工作,與ajax相同:http://jsfiddle.net/nMgF9/4/除了URL of course – Xeli