14

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) に渡そうとしていますが、途中で間違ってしまいました。助けてくれてありがとう!

4

5 に答える 5

41

次のようなデータを 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()関数の目的は、値を取得することではなく、指定された変数が存在するかどうかを確認することです。

于 2013-03-17T14:24:36.310 に答える
3

JSONをAJAX呼び出しのデータ型として使用していないため、指定したPHPはtrueまたはfalseにしかならないため、値にアクセスできないと思います。isset値にアクセスするためではなく、何かが存在し、値があるかどうかを確認する関数です。

PHP を次のように変更します。

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

上記の行は、post 変数が存在するかどうかを確認します。存在する場合は$uid、投稿された値と等しくなるように設定されます。存在しない場合は$uid、0 に設定されます。

コードの後半で、値を確認して$uidそれに応じて対応できます

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

これにより、コードが読みやすくなり、PHP でデータを処理するためのベスト プラクティスであると私が考えるものに従います。

于 2013-03-17T14:29:56.840 に答える
1

POST 変数に 'userID' という要素があるかどうかをテストするには、array_key_exists を使用したほうがよいでしょう..これは実際には、値が設定されているかどうかではなく、配列キーの存在をテストします..微妙でおそらく意味的な違いだけですが、読みやすさが向上します。

そして現在、 $__POST['userID'] が設定されているかどうかに応じて、 $uid がブール値に設定されています...記憶から思い出すと、試してみてください...

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

次に、識別可能な「ゲスト」ユーザーを使用して、コードをより読みやすくすることができます:)

isset() に関するもう 1 つのポイントは、このシナリオに適用される可能性はほとんどありませんが、後で見つけたくない場合は覚えておく価値があります...配列要素は合法的に 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

どの機能をどの目的に使用するかを確実に知っていることを確認してください。

于 2013-03-17T14:26:04.563 に答える
0

または、「データ」を削除して、URL を「logtime.php?userID="+userId」にしてみてください。

私はブライアンの答えの方が好きです.

于 2013-03-17T14:23:43.883 に答える