我结合了很多我在不同网站(包括这个网站)上找到的例子,并创建了包含所需AJAX功能的以下HTML代码。
我将此添加到我的head标签中(这阻止了我收到的一个页面错误):
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
HTML的其余部分:
<script type="text/javascript" language="javascript">
$(document).ready(function(){
$("button").click(function(){
$(function ()
{
//var vInvoiceNo=document.getElementById('idInvoiceNo').value;
$.ajax({
url:'InvoiceViewFunction.php', //where is the SQL
data: "InvoiceNo=209", //value SQL needs to run the WHERE -- This will eventually be a variable I get from the form
dataType: 'json',
success: function(data) //the data that returns from SQL
{
//Populating variables
var vInvoiceNo = data[0];
var vClientName = data[2];
//Update form content
$('#idName').html(vClientName); //the idName is an input field on my html form
}
});
});
});
});
</script>
<body>
<form action="InvoiceViewFunction.php" method="post">
<?php include("InvoiceForm.php"); ?> <!--content of the html form with tables, tr, td etc-->
<button class="Button" type="button">Get Invoice with AJAX function</button>
</form>
</body>
</html>
加载页面时没有错误,但单击按钮时没有任何回复。我不太明白我在做什么。我写了一些我理解的评论。我没有足够的“功能”知识来解决它。这是一个功能动物园,功能业务中包含所有功能。救命啊!
这是来自InvoiceViewFunction.php的代码:
<?php
//Connect to database
include("../ConfigFiles/ConnectDB_local_i.php");
//Populating the variables
$InvoiceNo = $_POST["nInvoiceNo"];
//Reading a specific invoice from DB
echo "<br>Trying to read from DB with invoice = <br>" . $InvoiceNo . "<br>"; //This tells the correct number just fine.
$query = "SELECT * FROM `invoicedata_table` WHERE InvoiceNo = '$InvoiceNo'";
$result = $mysqli->query($query) or die($mysqli->error.__LINE__);
//if($result->num_rows > 0)
//{
// while($row = $result->fetch_assoc())
// {echo stripslashes($row['ClientName']) . "<br>";}
//}
//else
//{echo 'NO RESULTS';}
echo json_encode($result);
//Close the DB connection
$mysqli->close();
?>
答案 0 :(得分:0)
数据语法错误。 它应该是:
data: {"InvoiceNo":209};
编辑#1
另一方面,你是json_decode()
服务器端的数据吗?
编辑#2
另外,您在控制台上是否收到任何错误?
答案 1 :(得分:0)
你没有 Derp。阅读评论!id="idName"
的元素,因此结果不会放在任何地方。
如果它是一个输入元素,那么你实际做的是:
<input id="idName">blah blah blah</input>
显然,这是无效的!
请尝试.val(vClientName)
。
答案 2 :(得分:-1)
您正在使用“文档就绪”jQuery函数,而不是简单地调用$.ajax
。省略封闭的$(function() { })
,只需在click事件处理程序中调用$.ajax
。
以下是有关“文档就绪”语法的更多信息:http://www.faridesign.net/2012/03/shorthand-for-jquery-document-ready-event/