我正在努力让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完成的。
答案 0 :(得分:2)
问题似乎出在那一行:
$stmt = $conn->prepare("UPDATE $database.app_ConSupAp SET `organisation` = :userinput AND `lastModified` = :time WHERE `appID` = :appid");
AND
运营商不应该在那个地方。用逗号修复它。
您也可以直接在查询中设置time()
,因为它不需要做好准备
$stmt = $conn->prepare("UPDATE $database.app_ConSupAp SET organisation = :userinput , lastModified = '".time()."' WHERE appID = :appid");