通过ajax将Javascript变量传递给PHP

时间:2013-03-17 14:20:20

标签: php javascript ajax

我正在尝试将一个变量从我的javascript代码传递到服务器端PHP代码。我知道这必须通过ajax调用来完成,我相信我已经正确完成,但是访问变量我从我的ajax传递到我的php是当我遇到麻烦,因为我是新来的PHP。这是我到目前为止的代码:

$(document).ready(function() {

            $(".clickable").click(function() {
                var userID = $(this).attr('id');
                //alert($(this).attr('id'));
                $.ajax({
                    type: "POST",
                    url: 'logtime.php',
                    data: "userID=" + userID,
                    success: function(data)
                    {
                        alert("success!");
                    }
                });
            });
        });

<?php //logtime.php
$uid = isset($_POST['userID']);
//rest of code that uses $uid
?>

我正在尝试将我的javascript变量“userID”传递给php($ userID),但是我在路上的某个地方出了问题。谢谢你的帮助!

5 个答案:

答案 0 :(得分:35)

将这样的数据传递给ajax调用(http://api.jquery.com/jQuery.ajax/):

data: { userID : userID }

在PHP中执行此操作:

if(isset($_POST['userID']))
{
    $uid = $_POST['userID'];

    // Do whatever you want with the $uid
}

isset()函数的目的是检查给定变量是否存在,而不是获取其值。

答案 1 :(得分:3)

由于您没有使用JSON作为数据类型而没有使用AJAX调用,我认为您无法访问该值,因为您提供的PHP只会是真或假。 isset是检查某些内容是否存在且具有值的函数,而不是访问该值的函数。

将您的PHP更改为:

$uid = (isset($_POST['userID'])) ? $_POST['userID'] : 0;

以上行将检查post变量是否存在。如果确实存在,则将$uid设置为等于发布值。如果它不存在则将$uid设置为等于0.

稍后在您的代码中,您可以检查$uid的值并做出相应的反应

if($uid==0) {
    echo 'User ID not found';
}

这将使您的代码更具可读性,并遵循我认为是在PHP中处理数据的最佳实践。

答案 2 :(得分:1)

要测试POST变量是否有一个名为'userID'的元素,你最好使用array_key_exists ..它实际上测试数组键的存在,而不是它的值是否已设置..一个微妙的,可能只是语义差异,但确实提高了可读性。

现在你的$ uid被设置为一个布尔值,具体取决于是否设置了$ __ POST ['userID'] ...如果我从内存中回忆起你可能想尝试...

$uid = (array_key_exists('userID', $_POST)?$_POST['userID']:'guest';

然后,您可以使用可识别的“访客”用户,并使您的代码更具可读性:)

另一点是reset(),即使它不太适用于这种情况,但是如果你不想在以后被发现,那么值得记住...数组元素可以合法地设置为NULL ...即它可以存在,但尚未填充,这可能是一个有效的,可接受的,可测试的条件。但是:

a = array('one'=>1, 'two'=>null, 'three'=>3);
isset(a['one']) == true
isset(a['two']) == false

array_key_exists(a['one']) == true
array_key_exists(a['two']) == true

确定您知道要将哪个功能用于哪个目的。

答案 3 :(得分:0)

或者,尝试删除“数据”并将URL设为“logtime.php?userID =”+ userId

我更喜欢Brian的答案,这个答案只是因为你试图在“数据”中使用URL参数语法,我想证明你可以正确使用该语法的地方。

答案 4 :(得分:0)

$(document).ready(function() {
            $(".clickable").click(function() {
                var userID = $(this).attr('id'); // you can add here your personal ID
                //alert($(this).attr('id'));
                $.ajax({
                    type: "POST",
                    url: 'logtime.php',
                    data : {
                        action : 'my_action',
                        userID : userID 
                    },
                    success: function(data)
                    {
                        alert("success!");
                        console.log(data);
                    }
                });
            });
        });


 $uid = (isset($_POST['userID'])) ? $_POST['userID'] : 'ID not found';
 echo $uid;

$ uid 添加您的功能

注意:如果 $ 不是添加 jQuery ,那么$ defined