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

Solutions Collecting From Web of "Передать переменную Javascript в PHP через ajax"

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

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

Чтобы проверить, имеет ли переменная 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 

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

Кроме того, попробуйте удалить «данные» и сделать URL «logtime.php? UserID =» + userId

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