通过 ajax 将 Javascript 变量传递给 PHP

IT技术 javascript php jquery ajax
2021-01-23 02:15:06

我试图将一个变量从我的 javascript 代码传递到服务器端 PHP 代码。我知道这必须通过 ajax 调用来完成,我相信我已经正确完成了,但是当我遇到麻烦时,因为我是 php 新手,访问我从我的 ajax 传递到我的 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个回答

将这样的数据传递给 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() 函数的目的是检查给定变量是否存在,而不是获取其值。

您可以在以下位置找到所有标准函数和类的说明:php.net(例如:php.net/isset)。
2021-03-25 02:15:06

由于您没有使用 JSON 作为数据类型,也没有使用 AJAX 调用,因此我假设您无法访问该值,因为您提供的 PHP 只会是真或假。isset是一个函数,用于检查某物是否存在并具有值,而不是访问该值。

将您的 PHP 更改为:

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

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

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

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

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

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

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

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

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

另一点 reisset() 即使在这种情况下不太可能适用,但如果您不想稍后被发现,那么值得记住...数组元素可以合法地设置为 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

Bw 确定您知道要用于哪个目的的函数。

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

我更喜欢布赖恩的答案,这个答案只是因为您尝试在“数据”中使用 URL 参数语法,我想演示您可以在何处正确使用该语法。

这将需要将 ajax 调用类型从 'post' 更改为 'get' ..数据返回服务器进行插入然后发布是正确的方法,他正在做的事情将正常工作。
2021-03-26 02:15:06
$(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在你的函数中添加

注意:如果$不是 supperted 则在 $ 定义的地方添加jQuery