我想用Ajax创建登录/注册站点,两者都已完成,但是当它收到$_GET
变量时,有一些问题
在体内,有函数log()
,这是主要的代码问题
<?php
if($say!=null && $reg=="log")
{
?>
fontid.innerHTML = "<?php echo $say; ?>"
<?php
}
$say="";
?>
$say
变量仍将保留,即使有另一个代码可以更改fontid.innerHTML
例如
index.php?say=You%20must%20login%20first®=log
然后在我的页面中显示你必须首先登录,好吧,然后我按没有输入登录,会有错误,如“请不要留空字段”,之后如果我按下另一个可能会改变{{ 1}}进入null,$ say值仍将保留...主要的一点是如何破坏$ say ??对不起,如果太长了
答案 0 :(得分:1)
似乎你在混淆Javascript和PHP,请注意这不是干净的编码,你会在某些时候后悔,因为你的代码将变得不可读。
您的代码出现在哪里,由于$_GET
函数,您对log()
变量问题的意思是什么?
'之后,如果我按下另一个可能会将fontid.innerHTML更改为null的内容,$ say值仍然会保留'
它没有得到null我认为它得到一个像''这样的空字符串,所以你最好也要求它:if($say!=null && $say!='' && $reg=="log")
有点offtopic但可能对你有所帮助,清理方法可能是:
创建一个文件ajax.php
并在那里执行所有ajax机制(可能使用某种$_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
}
}
这可能有助于您或其他人为您计划的项目获得更清晰的方法: - )
最高
答案 1 :(得分: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']);
}