-2

我想用 Ajax 制作登录/注册站点,它们都已完成,但是当它接收$_GET变量时,出现了一些问题 在正文中,有函数log(),这是主要的代码问题

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

即使有另一个代码更改 fontid.innerHTML 示例,该$say变量仍将保留

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

然后在我的页面中将显示您必须先登录,好的,然后我在没有输入的情况下按登录,会出现“请不要留空字段”之类的错误,然后如果我按其他可能会将其fontid.innerHTML变为 null 的东西,$说价值仍然存在......重点是如何破坏 $say ?抱歉,如果太长

4

2 回答 2

1

似乎您将 Javascript 与 PHP 混为一谈,请注意这不是干净的编码,您有时会后悔,因为您的代码将变得不可读。您的代码确实出现在哪里,$_GET由于log()函数而导致的变量问题是什么意思?

'之后,如果我按下其他可能将 fontid.innerHTML 更改为 null 的东西,$say 值仍将保留'它不会为 null 我认为它会得到一个空字符串,如 '',所以你最好也问一下:if($say!=null && $say!='' && $reg=="log")

有点离题但总体上可能对您有所帮助,一种清理方法可能是:创建一个文件ajax.php并在其中执行所有 ajax 机制(也许使用$_POST['action']您可以在 switch case 中使用的某种机制来执行某些操作。

所有返回都应该是 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 回答