似乎您将 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
}
}
也许这可以帮助您或其他人为您计划的项目获得更清洁的方法:-)
最大限度