2011-09-30 126 views
0

我有一種形式:提交HTML表單與AJAX

<form action="#" method="post" id="hubForm"> 
    <label class="labelText">Expiration Date:</label> 
    <input class="datBox" type="text" id="cal" name="date"> 
    <div class="clr"></div> 
    <div class="clr"></div> 
    <label class="labelText">Hub Name</label> 
    <input class="inputTxt" type="text" value="" name="name" /> 
    <div class="clr"></div> 
    <label class="labelText">Description</label> 
    <textarea class="textArea" name="desc"></textarea> 
    <div class="clr"></div> 
    <input class="submitButt" type="submit" value="" /> 
    <div class="clr"></div> 
</form> 

而且我有這個JavaScript:

$('#hubForm').submit(function() { 
    $.ajax({ 
     url: "hubControl.php", 
     type: "post", 
     data: $(this).serialize() 
    }); 
}); 

這PHP代碼:

//Add the hub, task, or project to the database 
mysql_query("INSERT INTO ".$type."s(".$IDvar.", name, description, users, expDate) 
VALUES(".$ID.", \"".$_POST['title']."\", \"".$_POST['desc']."\", ".$ID.", ".$_POST['date'].")"); 

但它拒絕向數據庫添加任何內容。我已經重寫了代碼以使用$ _GET並測試了PHP,並且驗證了它的工作原理。

至於JavaScript的,我也嘗試過這樣的東西

$.post("hubControl.php", $('#hubForm').serialize()); 

,但似乎沒有任何工作。有任何想法嗎?

編輯: 形式HTML給了我別人,所以我不知道這是否是與像方法=「郵報」的東西AJAX/JavaScript的100%兼容。你會比我想象的更好。

+0

你可以使用Fiddler OT Firebug的測試,看看哪些內容發佈到PHP網頁..還有,你確定了$(這)是指裏面的表單ajax調用..我不知道這是#hubForm的上下文.. –

+0

我試過它沒有$ this,並使用$('#hubForm')和$('hubForm')來代替。我會嘗試使用Firebug,但我不熟悉它。 – Serneum

+0

看起來Bobby將會有另一個場地日:[bobby-tables](http://bobby-tables.com/)即 –

回答

0

如果它使用$ _GET而不是$ _POST,聽起來像$ _POST數組沒有被正確填充。

我建議您在加載頁面時通過查看$ _REQUEST或$ _POST數組開始工作。某些HTML預標籤中的print_r($ _ POST)可能非常有用。

如果您知道PHP甚至沒有收到正確的數據,您可以專注於修復Ajax/jQuery。

+2

另外,請閱讀MySQL注入以及爲什麼您應該使用mysql_real_escape()來清理任何用戶輸入。 – earthmeLon

+0

我正在使用jQuery UI對話框,所以當我嘗試在PHP頁面上打印任何內容時,它只是不顯示任何內容。事實上,根據我的測試所知,它可能根本就沒有進入PHP文件。我也嘗試創建一個submit()函數並執行onClick()並在函數中放置一個alert(),但沒有發生任何事情。我會在幾分鐘內嘗試print_r($ _ POST),看看是否有任何東西出現 – Serneum

+0

如果你將print_r($ POST)放入你的錯誤日誌中,如果頁面甚至被ajax查詢擊中,這將是顯而易見的。嘗試類似於: $ test = print_r($ _ POST,1); error_log(「---- POST ----- \ n」。$ test); – earthmeLon

0

由於您使用的是jQuery,因此您應該考慮使用ajaxForm plugin。它使用起來非常簡單,您只需將它放入您的項目中,只需進行最少的設置即可。

+0

這與上面的調試一起工作。 – Serneum

0

嘗試使用大寫類型:

$.ajax({ 
    url: "hubControl.php", 
    type: "POST", 
    data: $(this).serialize() 
});