我正在构建一个连接到数据库的Web应用程序,该数据库存储了几个变量,以使网站正常运行。
现在我使用php来连接和获取信息,但最后使用.html文件要容易得多,因此我计划使用AJAX来获取信息。
我有这段代码:
$(function ()
{
$.ajax({
url: 'api.php',
data: {
paramName: $("#partyIDInput").val()
},
method: post,
dataType: 'json',
success: function(data)
{
var id = data[0];
var pID = data[1];
var pLOC = data[2];
var pNAME = data[3];
var pFORMID = data[5];
var pFORMSONG = data[6];
var pFORMARTIST = data[7];
var pFORMNAME = data[8];
$('#partyTitle').append(""+pNAME+"");
}
});
});
通过api.php获取所有变量,如下所示:
<?php
$db = new PDO('mysql:host=xxxxx;dbname=xxxxx;charset=utf8', 'xxxxx', 'xxxxx');
$partyInput = $_POST['paramName'];
$stmt = $db->prepare("SELECT * FROM playr_partyID_db WHERE partyID = $partyInput");
$stmt->execute(array($_POST['paramName']));
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>
但我的问题是,当用户写了&#34; partyID&#34;时,我在网页上输入了文字。在它和点击继续我希望脚本从具有该ID的行中获取信息。现在它只从第一行获取。
我之前从未使用过AJAX,所以如果你有时间,请解释一下发生了什么。
提前致谢。
编辑:
这里有输入,请注意我尚未根据css对页面进行优化。
<form style="margin-top:150px;" method="post" action="">
<div class="list-block">
<ul>
<li class="item-content" style="background: #fff;margin-bottom: -26px;">
<div class="item-inner">
<div class="item-input">
<input style="text-align:center;padding:0;" type="text" name="partyID" placeholder="Ange PartyID">
</div>
</div>
</li>
</ul>
</div>
<div class="list-block">
<ul>
<li>
<input type="submit" name="submit" value="Festa på!" class="login_bttn" style=" background: none;color: white;border: 1px solid white;border-radius: 500px;width: auto;margin-left: auto;margin-right: auto;margin-top: 40px;"></input>
</li>
</ul>
<div class="list-block-labe"></div>
</div>
</form>
答案 0 :(得分:3)
您必须在AJAX调用中发送内容 -
$(function ()
{
$.ajax({
url: 'api.php',
data: "", // needs to contain the data you want to send
method: post, // you also need a method
一旦这样做,您发送的变量将在PHP的$_POST
数组中提供,您可以在SQL查询中包含这些变量。这是一个basic AJAX guide,它可以让你更清楚。
另外你应该stop using mysql_*
functions。它们不再被维护,而是officially deprecated。请转而了解prepared statements,并考虑使用PDO it's not as hard as you think。
答案 1 :(得分:2)
首先,要传递该额外参数,请将data: "",
更新为
data: {
paramName: $("#idOfField").val()
},
其次,正如Jay Blanchard所说,切换到PDO
$db = new PDO('mysql:host=localhost;dbname=testdb;charset=utf8', 'username', 'password');
$stmt = $db->prepare("SELECT * FROM playr_partyID_db WHERE partyID =?");
$stmt->execute(array($_POST['paramName']));
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);