通过ajax将Javascriptvariables传递给PHP

我试图从我的JavaScript代码传递到服务器端PHP代码的variables。 我知道这必须通过一个Ajax调用,我相信我做了正确的,但是访问variables我从我的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 ?> 

我试图通过我的JavaScriptvariables“userID”到PHP($ userID),但是我沿着这条路走错了地方。 谢谢您的帮助!

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

由于您没有使用JSON作为数据types,因此您不能访问该值,因为您提供的PHP只会是真或假。 isset是一个函数,用于检查是否存在某个值并且有一个值,而不是访问该值。

改变你的PHP是:

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

上面的代码会检查postvariables是否存在。 如果它确实存在,它将设置$uid等于发布的值。 如果不存在,则将$uid设置为0。

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

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

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

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

现在您的$ uid被设置为一个布尔值取决于$ __ POST ['userID']是否设置或不…如果我记得你可能想尝试…

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

然后你可以使用一个可识别的“客人”用户,并使你的代码更加可读:)

还有一点是isset(),即使它不太可能适用于这种情况,值得记住的是,如果你不想稍后被抓出…一个数组元素可以被合法地设置为NULL …即它可以存在,但还没有人口,这可能是一个有效的,可接受的,可testing的条件。 但是:

 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

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