2011-06-09 47 views
2

我使用jQuery在鏈接上執行基於AJAX的頁面重新加載 - 它們彈出「Loading ...」div窗口,然後在內容返回並加載內容時關閉它。這完全按照預期工作。有沒有一種方法使用jQuery提交沒有詳細字段的表單按字段細分?

我在我的項目中有幾種不同的形式,我想使用相同的方法提交 - 在提交時彈出一個「Loading ...」div窗口,然後在內容返回時關閉它。有沒有辦法做到這一點,而不寫每個表單的自定義函數?我見過的示例要求您抓取每個表單字段並對其進行編碼,並將其傳遞給ajax方法。有些形式只有幾個領域,其他形式有很多,所以這將是一個繁瑣的過程。我希望它只抓取表單中的所有字段並在字段名稱下提交它們。

任何有識之士將不勝感激!

回答

3

它看起來像你正在尋找沿線.serialize()的東西。它基本上是jQuery用於爲AJAX調用或GET查詢字符串編碼表單元素的實用函數。

使用該功能可以根據表單元素的name屬性獲得類似myinput=somevalue&myotherinput=someothervalue的內容。只要能夠識別格式(比如類似JSON數據或標量字符串),就可以將其轉換爲針對服務器的任何調用。

+1

你也可以把這個變成一個Ajax調用的POST數據... – TheHippo 2011-06-09 12:16:10

+0

...這是像我說的那樣,一個AJAX調用。 :) +1 – 2011-06-09 12:19:23

+0

@hippo〜啊,我有點明白你的意思。讓我爲你編輯它。 :d – 2011-06-09 12:20:13

2

這是很容易實際上,你可以這樣做:

$('form').serialize(); 

顯然你要發送它的形式,但如果你調用選擇表單標籤後,序列化,它會序列的形式爲您服務。然後你可以在你的ajax調用中使用它。

1

您可以或許有辦法可以使用$ .serialize()函數這樣

$('#formId').serialize(); 
1

使用serialize()。您可以編寫一個函數在提交表單時執行。例如,如果您有三種形式withd ID「Form1的」,「窗口2」和「form3」:

$(document).ready(function() 
{ 
    $('#form1, #form2, #form3').submit(sendData); 
}); 

function sendData() 
{ 
    var dataString=$(this).serialize(); 

    $.ajax({ 
     url: "url_to_send.php", 
     data: dataString 
    }); 

    return false; 
} 
相關問題