-2

Ajaxでログイン・登録サイトを作りたい、両方とも出来たが、$_GET変数を受け取ると何か問題がある 本体内部、関数がlog()あり、これが主なコードの問題

<?php
if($say!=null && $reg=="log")
{
?>
fontid.innerHTML = "<?php echo $say; ?>"
<?php
}
$say="";
?>

$sayfontid.innerHTML を変更する別のコードがあっても、変数はそのまま残ります。

index.php?say=You%20must%20login%20first&reg=log

次に、私のページに「最初にログインする必要があります」と表示されます。次に、入力せずにログインを押します。「空のフィールドを残さないでください」などのエラーが表示fontid.innerHTMLされます。 say 値はまだ残ります...主なポイントは、$say ?? を破棄する方法です。長すぎる場合は申し訳ありません

4

2 に答える 2

1

Javascript と PHP を混同しているようです。これはきれいなコーディングではなく、コードが読めなくなるため、ある時点で後悔することに注意してください。あなたのコードはどこに表示されますか、関数による$_GET変数の問題とはどういう意味ですか?log()

「その後、fontid.innerHTML を null に変更する可能性のある別のものを押すと、$say の値はそのまま残ります」null にならないので、「」のような空の文字列になると思います。 :if($say!=null && $say!='' && $reg=="log")

少しトピックから外れていますが、全体的に役立つかもしれません。クリーンアップのアプローチは次のようになりajax.phpます$_POST['action']

すべての戻り値は json_encoded である必要があるため、処理する必要があるデータは戻り時に常に同じように見えます。そのためにこの関数を使用します:

function jsondie($status, $array, $jsoutput){ 
    if(!is_array($array)) { jsondie('error', 'Not an array!', $array); }
    $return_values = array('status' => $status, 
                    'data' => $array,
                    'jsoutput' => $jsoutput);
    return json_encode($return_values);
}

(例) jquery $.ajax を使用して JavaScript を作成しdataType: 'json' 、返されたデータで簡単に確認できます。

jQuery.ajax("ajax.php", dataType: 'json', { action: 'login', username: username, password: password, captcha: captcha },
    function(ajaxdata) {
        if(typeof(ajaxdata.status)=='undefined') { 
            alert('error in your ajax function'); 
            // push that stuff to f12 console for firebug + chrome
            try { console.log(ajaxdata); } catch(e){}
            return false;
        } else if (ajaxdata.status == 'error'){
           // write it to some error dialog or field here 
           fontid.innerHTML = '<span class="error">'+ajaxdata.data+'</span>';
           // flush the returned data to the console
           try { console.log(ajaxdata.jsoutput); } catch(e){}
        } else {
           // all fine, write or do something on success
           //window.location = 'loggedin.php';
           fontid.innerHTML = ajaxdata.data; // this is the data coming from ajax.php
        }
    }

たぶん、これはあなたや他の誰かがあなたの計画されたプロジェクトのためのよりクリーンなアプローチを得るのに役立ちます:-)

マックス

于 2013-06-18T08:28:11.537 に答える
0

@ x4rf41 (およびその他...) が言ったように、RTM !

ドキュメントからコピーペーストされた正確な答えは次のとおりです...

   To unset() a global variable inside of a function, then use the $GLOBALS array to do so:


 function foo() 
 {
     unset($GLOBALS['bar']);
 }
于 2013-06-18T08:05:35.020 に答える