2011-12-16 25 views
0

我有一個包含動態創建複選框的形式,被顯示過濾器數據:有沒有辦法使用jQuery和AJAX發佈沒有任何序列化的表單?

$html .= "<form id='optionsForm'action='filter.php' method='post'>"; 
foreach($selectValues as $key => $value){ 
    $title=new MODEL\String($key); 
    $html.= "<fieldset class='optionsBox'>"; 
    $html.= "<legend>".$title->friendlify()."</legend><br/>"; 
    foreach($value as $option){ 
      $html .= "<input type='checkbox' name='".$key."[]' value='$option'>".htmlspecialchars($option)."</input>"; 
    } 
    $html.= "</fieldset>"; 
} 
$html .= "</select><input type='submit' value='submit'></form></div>"; 

此生成包含複選框,例如值的多個陣列

name => 
     [0] value1 
     [1] value2 

newname => 
     [0] value1 
     [1] value2 

一旦它被提交,數組被傳遞給一個php函數,將它們分開,然後使用數據運行查詢。

我的問題是,當我使用jQuery .ajax函數序列化數據,我不能按照我想要的方式工作。

什麼是簡單的方法來使用相同的表單操作我必須處理表單,但結果顯示在複選框下方的div

我想更好的問題是什麼時候在form action中使用filter.php獲取信息當它來自ajax時,變量名是什麼? 現在我只是使用_POST變量並將其設置爲等於我的新數組名稱。就好像它是一個提交按鈕提交了一份標準格式

+0

護理來發表您的AJAX調用? – Kenaniah 2011-12-16 18:43:19

回答

1
$('#optionsForm').submit(function() { 

    $.ajax({ 
     url: this.action, 
     type: "POST" 
     data: $(this).serialize(), 
     // ... 
     // add success/complete/error handlers 
    }); 
    return false; 

}); 

.serialize()將格式化數據。

單擊您的提交按鈕將執行此ajax並阻止默認窗體操作。

1

如果您不喜歡jQuery序列化數據的方式,您可以在POST到服務器之前根據表單值準備自己的有效負載。不管怎樣,你都應該能夠格式化數據。

0

,你可以簡單地使用

$.post("test.php?data1=1&data2=2", function(data) { 
    alert("Data Loaded: " + data); 
}); 

,並從服務器端,您將需要請求每個varable

相關問題