AJAX函数语法 - 我不太懂

时间:2013-12-19 16:57:50

标签: php html ajax

我结合了很多我在不同网站(包括这个网站)上找到的例子,并创建了包含所需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();
?>

3 个答案:

答案 0 :(得分:0)

数据语法错误。 它应该是:

data: {"InvoiceNo":209};

编辑#1

另一方面,你是json_decode()服务器端的数据吗?

编辑#2

另外,您在控制台上是否收到任何错误?

答案 1 :(得分:0)

你没有id="idName"的元素,因此结果不会放在任何地方。 Derp。阅读评论!

如果它是一个输入元素,那么你实际做的是:

<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/