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