我很努力讓AJAX與表單一起工作,將數據傳遞給某些PHP/MySQL。AJAX與PHP/MySQL交談
這裏是代碼 - HTML:
<form id="<?=$applicationKey?>" name="<?=$applicationKey?>" action="./post.<?=$appNo?>.<?=$applicationKey?>.php" method="POST" enctype="multipart/form-data">
<input type="hidden" name="uID" value="<?=$uID?>">
<input type="hidden" name="uaID" value="<?=$uaID?>">
<input type="hidden" name="appID" value="<?=$appID?>">
<input type="text" id="input_1_1" name="input_1_1" placeholder="Name of the Applicant's Organisation" value="<?=$input_1_1?>" required>
<input type="text" id="input_1_2" name="input_1_2" placeholder="First Name" value="<?=$input_1_2?>" required>
<input type="text" id="input_1_3" name="input_1_3" placeholder="Last Name" value="<?=$input_1_3?>" required>
等(我敢肯定,你不需要在這裏列出的所有形式)。我有這個JS作爲一個單獨的.js文件,在HTML的頭裝:
function doSend_1_1() {
$.post('./post.4.ConSupAp.php?appID=' + (appID) + '&ident=input_1_1', $('#input_1_1').serialize());
}
function doSend_1_2() {
$.post('./post.4.ConSupAp.php?appID=' + (appID) + '&ident=input_1_2', $('#input_1_2').serialize());
}
function doSend_1_3() {
$.post('./post.4.ConSupAp.php?appID=' + (appID) + '&ident=input_1_3', $('#input_1_3').serialize());
}
$("document").ready(function() {
$("#input_1_1").blur(doSend_1_1);
$("#input_1_2").blur(doSend_1_2);
$("#input_1_3").blur(doSend_1_3);
})
而且這類作品的好。當用戶離開這三個領域中的任何一個時,它都會嘗試將數據傳遞給PHP並使其完成我想要的任務。 PHP的是這樣的:
<?php
include './conf/Funcs.php'; // Grab our functions
include './conf/DBconfig.php'; // Useful to have access to the database
$appID = $_GET['appID']; // identifies what entry we are talking to in the DB
$ident = $_GET['ident']; // defines what field is being posted
if(($ident) == "input_1_1") {
$userInput = $_POST['input_1_1'];
try {
$stmt = $conn->prepare("UPDATE $database.app_ConSupAp SET `organisation` = :userinput AND `lastModified` = :time WHERE `appID` = :appid");
$stmt->bindParam(':userinput', $userInput, PDO::PARAM_STR, 64);
$stmt->bindParam(':time', time(), PDO::PARAM_INT, 11);
$stmt->bindParam(':appid', $appID, PDO::PARAM_INT, 11);
$stmt->execute();
} catch(PDOException $e) { catchMySQLerror($e->getMessage()); }
}
?>
由於我沒有順利拿到這工作我還沒有在PHP中添加部分使用其他領域還沒有第一個輸入字段。所以是的,他們目前失蹤。
Firebug報告沒有問題,並且數據庫中組織字段中的信息確實從其先前預設的條目更改爲「0」 - 而不是我在輸入字段中鍵入的內容。此外,即使將奇怪的0值輸入到數據庫中,time()圖標也不會更新。沒有任何錯誤和Firebug看起來很開心,我不知道爲什麼我的數據沒有被正確插入。 Firebug確實報告,無論輸入到文本字段是否正確傳遞給PHP。任何想法到底是什麼出錯?
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
此正被利用,加載在始發頁頭。數據庫是MySQL。所有與數據庫的php通信都是使用PDO完成的。
嘗試在您的數據庫查詢逗號來代替'和'。還可以用'lastModified = now()'代替'lastModified =:time',因爲它不需要任何處理。 – 2015-02-08 13:40:38
phillip100 - 奇妙的是,第一次在我的ajax使用混淆中忽略了輕微的數據庫錯誤。謝謝!請介意將您的答案設置爲答案,以便我可以相信您瞭解正確答案? 關於在數據庫查詢中使用now(),我使用time()的原因是因爲我有一個與服務器不同的時區,在php中設置,這可以確保它使用修改的時區而不是服務器默認值。 – Cassandra 2015-02-08 13:53:16
另外,你有一個'post'形式,但是使用'$ _GET'檢索變量。 (啊,它看起來像你有一個隱藏的字段,並將它們傳遞給查詢字符串,你不需要兩者)。 – halfer 2015-02-08 13:54:14