Подтвердить что ты не робот

Передать переменную Javascript в PHP через 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), однако я ошибался где-то по дороге. Спасибо за помощь!

4b9b3361

Ответ 1

Передайте данные, подобные этому, в вызов 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() Цель функции - проверить, существует ли данная переменная, а не получать ее значение.

Ответ 2

Поскольку вы не используете 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.

Ответ 3

Чтобы проверить, имеет ли переменная POST элемент с именем 'userID', вам лучше использовать array_key_exists.., который фактически проверяет существование ключа массива, а не то, установлено ли его значение. Тонкая и, вероятно, только семантическая разница, но она улучшает читаемость.

и прямо сейчас ваш $uid устанавливается в логическое значение, зависящее от того, установлен ли $__ POST ['userID'] или нет... Если я вспомню из памяти, вы можете попробовать...

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

Затем вы можете использовать идентифицируемого пользователя "гость" и сделать код более читаемым:)

Еще одна точка re isset(), хотя она вряд ли применима в этом сценарии, стоит вспомнить, не хотите ли вы поймать позже... элемент массива может быть законно установлен в 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

Убедитесь, что вы знаете, какую функцию вы хотите использовать для этой цели.

Ответ 4

В качестве альтернативы попробуйте удалить "данные" и сделать URL "logtime.php? userID =" + userId

Мне нравится, что Брайан отвечает лучше, этот ответ объясняется только тем, что вы пытаетесь использовать синтаксис параметра URL в "data", и я хотел продемонстрировать, где вы можете правильно использовать этот синтаксис.

Ответ 5

$(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 добавить в свои функции

note: если $ не удовлетворено, чем добавить jQuery, где $ определено