如何将javascript值发送到PHP脚本?

时间:2015-09-28 09:11:29

标签: javascript php jquery mysql

这是我的php代码,它使用mysql查询的结果创建一个表:

echo "<table id='table' class='selectQuery'>
while($row = mysqli_fetch_array($slctQuery)) {  
        // ; echo $row['id']; echo
            echo "<tr class='someClass' idNumber="; echo $row['id']; echo ">
                <td>";
                    echo $row['fname'];
              echo "</td>
                <td>";
                    echo $row['lname'];                 
              echo "</td>;
              </tr>";
        }
    echo "</table>";

这部分是我的jquery代码,用于在点击表格行时更改样式:

<script>
$(document).ready(function(){
            $("#table tr").click(function(){
                $('.someClass').removeClass('selected');
                $(this).addClass('selected');

                idNum = $(this).attr('idNumber');
            });
            $("#table tr").click(function(){
                $("#DelEdtQuestion").addClass('selected1');
            });
});
</script>

这部分用于风格:

<style>
tr.selected {
    background-color: brown !important;
    color: #FFF;
}
</style>

这是我的按钮

的php代码
if(@$_POST['Search']){
    ///   what should I do?
}

所以,现在我想在点击表格中的搜索按钮时获得我的idNum值。

感谢您的关注

1 个答案:

答案 0 :(得分:1)

您可以使用ajax。如果你有一个id =“myform”的表单和(示例)输入字段:firstname,lastname,username和password,下面的脚本应该将数据发送到php:

$(document).ready(function(){
    var datastring = $("#myform").serialize();
    $.ajax({
        type: 'POST',
        url: 'ajaxfile.php',
        data: datastring
    }).done(function(res){
        var res = $.trim(res);
        alert(res);
    });
});

ajaxfile.php可以是这样的:

<?php

$firstname = mysql_real_escape_string($_POST["firstname"]);
$lastname = mysql_real_escape_string($_POST["lastname"]);
$username = mysql_real_escape_string($_POST["username"]);
$password = mysql_real_escape_string($_POST["password"]);

//here you have the variables ready to do anything you want with them...
//for example insert them in mysql database:
$ins = "INSERT INTO users (firstname, lastname, username, password ) VALUES ( '$firstname', '$lastname', '$username', '$password' )";
if(mysql_query($ins)){echo "SUCCESS";}else{echo "FAILURE";}

?>

另一个与你的类似的例子是从表中获取行id,将其传递给ajax,让ajax(例如)对数据库进行查询并返回结果:

// your script, modified for ajax:
$(document).ready(function(){
    $("#table tr").click(function(){
        $('.someClass').removeClass('selected');
        $(this).addClass('selected');
        var idNum = $(this).attr('idNumber'); //use "var" to -initially- set the variable
        $.ajax({
            type: 'POST',
            url: 'ajaxfile.php',
            data: 'id='+idNum
        }).done(function(res){
            var res = $.trim(res);
            alert(res);
        });
    });
    $("#table tr").click(function(){
        $("#DelEdtQuestion").addClass('selected1');
    });
});

修改了ajaxfile.php以适应上面的例子:

<?php

$id = mysql_real_escape_string($_POST["id"]);

//query database to get results:
$result = "SELECT * FROM `users` WHERE `id` = '$id' LIMIT 1";
$row = mysql_fetch_assoc($result);

echo "Username: ".$row["username"]."Password: ".$row["password"]."Firstname: ".$row["firstname"]."Lastname: ".$row["lastname"].

?>

由于您的问题相当暧昧,我付出更多努力让您了解ajax的基本知识,以便您制定出自己的解决方案,而不是建议一个潜在的解决方案 - 最终可能不是您的正在寻找......

由于我们讨论的是ajax基础知识,因此可以保护您的ajax文件,因为它们可以从任何浏览器访问,这是一个很好的做法:

在任何ajax文件的最开头,在“?php”标记的正下方,你可以在下面添加这些行,以保护文件不被浏览器访问 - 但仍然可以访问ajax:

//protect the file from un-authorized access
define('AJAX_REQUEST', isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest');
if(!AJAX_REQUEST) {die();}

希望能帮助你和他人。吨。

更新:

将php和javascript文件分开保存总是一个好习惯...在上面的示例中,理想情况下涉及3个文件:主要的php文件,脚本文件和ajax-php文件。

所以 - 优选地在你的“主”php文件的“body”标签之后 - 你应该包括脚本文件(在jquery ofcourse之后!)。像那样:

<!-- jQuery v.1.11.3-->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>

<!-- include scripts file -->
<?php include("scripts.php"); ?>

(请注意,对于jquery,我使用常规的“脚本”标签,但对于脚本文件,我只是做一个“php include”)。

如上所述,javascript文件也有“.php”扩展名(不是“.js”)。这是我喜欢做的“技巧”因为它让我能够在js文件中执行php代码。当然,该文件中的所有javascript代码都包含在“script”标记之间。

假设的“scripts.php”示例:

<script>

// I create a js variable that takes value from php
var phpDate = '<?php date("Y-m-d"); ?>';
alert(phpDate); 

//or pass the contents of another php variable in your app to javascript:
var myPhpVar = '<?php echo $my_php_var; ?>';

//or put a php SESSION to a js variable:
var mySess = '<?php echo $_SESSION["my_session"]; ?>';

</script>

当您想要传递给应用程序中已存在的javascript php变量时,上述内容非常方便。

这是一个非常长的答案(更像是一个教程!)...但现在应该非常清楚如何将值不仅从js传递到php而且反之亦然!!!