2012-07-27 90 views
0

我想要製作一個小型表單,讓用戶從3個不同的單選按鈕列表中選擇一個元素,將一個元素設置爲用戶活動元素(將存儲到MySQL)。在某種程度上,它不工作,我似乎無法弄清楚爲什麼,也許你的某個人可以看到我做錯了什麼?Form/ajax/PHP問題

HTML:

<form name="activeForm1" method="post"> 
<fieldset data-role="controlgroup"> 
    <div class="ui-radio"> 
     <input type="radio" name="active" value="1" id="1"> 
     <label for="1"></label></input> 
    </div> 
    <div class="ui-radio"> 
     <input type="radio" name="active" value="2" id="2"> 
     <label for="2"></label></input> 
    </div> 
    <div class="ui-radio"> 
     <input type="radio" name="active" value="3" id="3"> 
     <label for="3"></label></input> 
    </div> 
</fieldset> 
<div data-role="footer"> 
    <input type="submit" href="#" onclick="setActive(1)"/> 
</div> 
</form> 

的JavaScript/AJAX調用

function setActive(formid) 
    { 
      $.ajax(
      { 
       type:'POST', 
       url:'active.php', 
       data:$('#activeForm'+formid).serialize(), 
       success:function(response) 
       { 
       } 
      } 
     ); 
    } 

PHP代碼:

session_start(); 
include('connectToDb.php'); 
$id = $_SESSION['id']; 

if (isset($_POST['active'])) 
{ 
    $formValue = $_POST['active']; 
    mail('[email protected]','Test',$formValue,'From: [email protected]'); 
    mysql_query(/* UPDATE MySQL */); 
    header("Location: main.php"); 
} 
else 
{ 
    mail('[email protected]','Test','No data recieved!','From: [email protected]'); 
} 

所以它的工作原理,直到if (isset($_POST['active']))但隨後的郵件我沒有數據被收到。我已經在同一頁面上有兩個類似的表單,它們更大,並且沒有問題。無法弄清楚我在這裏做錯了什麼。

+1

您是否確認在單擊提交按鈕之前至少有一個單選按鈕被選中? – asprin 2012-07-27 06:26:16

+0

請問您可以添加一個'var_dump($ _ POST ['active'])'? – 2012-07-27 06:27:26

+0

爲什麼href屬性是輸入元素? – 2012-07-27 06:31:02

回答

2

錯誤代碼:

data:$('#activeForm'+formid).serialize(), 

#activeForm是不是一個ID,它的形式標記的名稱,

更正表格標籤,

<form name="activeForm1" id="activeForm1" method="post"> 
+0

該死的..我怎麼想的?漂亮的漁獲 – asprin 2012-07-27 06:32:26

+0

Aaaaah!這很有道理!乾杯!一直在竊聽我幾個小時,不能相信我錯過了! – Tom 2012-07-27 06:38:22

0

變化

<input type="submit" href="#" onclick="setActive(1)"/> 

<input type="button" href="#" onclick="setActive(1)"/> 

,然後它應該工作

2

替換以下行

data:$('#activeForm'+formid).serialize(), 

data: $('form[name="activeForm'+formid+'"]').serialize(),