使用JQuery和Ajax从db接收数据

时间:2015-12-08 19:08:17

标签: jquery sql ajax

我真的很怀疑如何开始使用这段代码。在我的DIV标签“talraekke”中,我想从我的数据库中收到最后10条记录。这意味着每当我在表单字段中输入一个数字时,div标签应该使用最新的数字进行更新,而不必更新页面。在途中有人可以帮助我吗?

最诚挚的问候 朱莉

PS:请远离过时的php / sql语句:-)这只是我的测试环节。

HTML     

    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
        <script src="js/my_script.js" type="text/javascript"></script>
        <link rel="stylesheet" type="text/css" href="css\placing.css">
        <title>Numbers</title>
    </head>

    <body>
        <div class="topbar">
            <p>Topbar</p>
        </div>


        <div class="talraekke">
            ****Recieve from DB******
        </div>

        <div class="content">
            <p>Enter The Number</p>
            <form id="myForm" action="userInfo.php" method="post">
                <input type="value" name="numbervalue">
                <button id="sub">Save</button>
            </form>
            <span id="result"></span>
        </div>  
    </body>
    </html>

JS:

// Insert function for number
function clearInput() {
    $("#myForm :input").each( function() {
         $(this).val('');
    });
}

    $(document).ready(function(){
         $("#sub").click( function(e) { // note the 'e'
       e.preventDefault(); // remove default action(submitting the form)
       $.post( $("#myForm").attr("action"), 
         $("#myForm :input").serializeArray(), 
         function(info){ $("#result").html(info); 
       });
       clearInput();
    });
    })

// Receive data from database

PHP:

<?php

include('connection.php');


// Insert To Database
$strSQL = "INSERT INTO numbertable(numbers) VALUES('" . $_POST["numbervalue"] . "')";


        if(mysql_query("INSERT INTO numbertable VALUES('numbers')"))
            echo "Insert Succesfull";
        else
            echo "Failed";


// The SQL statement is executed 
    mysql_query($strSQL) or die (mysql_error());

// Close the database connection
    mysql_close();

?>

2 个答案:

答案 0 :(得分:2)

老实说,你可能想要研究像Backbone.js这样的框架,这可以使这更容易。首先,您应该通过转义表单输入或将其包装在函数中以返回数值来删除SQL注入漏洞。此外,我不认为输入类型的&#34;值&#34;已验证;你可以使用&#34; text&#34;或&#34;数字&#34;但请记住,后面的会阻止安全漏洞,因为无法信任客户端输入。

如果您想手动执行此操作,只需从控制器返回类似JSON对象的数据,然后您可以在客户端使用它。如果没有任何提交按钮(并且您没有调用提交方法),则不应该阻止表单提交。如果你想用一个例子来使用jQuery用jQuery post()的结果填充DIV,可以在这里找到一个例子:

http://api.jquery.com/jquery.post/

CTRL + F:使用Ajax发布表单并将结果放入div

答案 1 :(得分:0)

您正在寻找的是

$res = mysql_query( 'SELECT * FROM numbertable' );
$values = mysql_fetch_array( $res );
echo json_encode( $values );

就在php的//close the database connection部分之前。在die();之前添加?>可能会造成伤害,以确保没有进一步的输出。

您的javascript中的一些更改可以帮助您入门:

$("#sub").click( function(e) { 
    e.preventDefault(); // remove default action(submitting the form)
    $.post( $("#myForm").attr("action"), 
        $("#myForm :input").serializeArray(), 
        function(info){ 
            info = JSON.parse(info);
            $("#result").html(info);
            console.log(info);
        }) // end of the POST request success hander
   ); // end of the $.post function call
}); // end of the .click function call

您现在拥有返回值的Javascript对象。您可以在Developer控制台中看到它。从那里开始。

但请注意不推荐使用php的mysql扩展。更好地使用mysqli或pdo_mysql。另请注意Eric Wilk的答案。安全是一个严重的问题,框架可以使您的生活在这方面和其他方面更容易。

开发的另一个提示:在大多数浏览器开发人员工具中,您都有一个网络选项卡,您可以在其中检查正在进行的所有HTTP请求的标头和响应信息。找出正在发生的事情非常有帮助。

哦,还有一件事我忘了......

echo通知数据库插入成功或失败可能会使你的php无效json的响应。您可以暂时删除它们,或者更好,开始构建响应对象并在整个脚本中不进行其他输出。想想这样的事情:

$response = array();
/* ...some code in between... */
    $response["insert"] => array("success" => true, "msg" => "Insert Succesfull");
else
    $response["insert"] => array("success" => false, "msg" => "Failed");
/* ... */
$values = mysql_fetch_array( $res );
$response["values"] => $values;
echo json_encode( $response );