ThinkPHP无法调用M()函数

我用ThinkPHP写注册页面,需要检查用户名是否可用.我用ajax技术.我在App/Lib下新建了一个Common目录(自动生成的时候没有该目录,只有Action,Behavior,Model,Widget),把ajax技术调用的check.php放在自己建的Common目录里面,但是却报错:call to undefined function M().是不是这个文件夹不能调用M()函数?这样的话,应该把check.php放哪里?

check.php代码:

<?php
$username=$_GET["username"];
$user=M('user');
$res=$user->where('user_name="$username"')->find();
if($res!=null && $res!=false)
{
echo "1";
}
else
{
echo "0";
}
?>

ajax.js代码:
var xmlHttp;
//判断浏览器是否支持AJAX
function createXMLHttp()
{
if(window.XMLHttpRequest)
{
xmlHttp=new XMLHttpRequest();//创建对象 Firefox、Opera 以及 Safari 浏览器、IE8
}
else if(window.ActiveXObject)//IE
{
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");//IE6+,
}
catch(e)
{
try
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");//IE5.5
}
catch(e)
{
alert("您的浏览器不支持AJAX!");
return false;
}

}

}
}
//check
function check(username1)
{
createXMLHttp();
xmlHttp.open("GET","../../VideoMonitor/Lib/Common/check.php?username="+username1,true);
xmlHttp.onreadystatechange=function()
{
if(xmlHttp.readyState==4)
{
if(xmlHttp.status==200)
{
var result=xmlHttp.responseText;
alert(result);
if(result==1)
document.getElementById("testCanReg").innerHTML="<font color='red'>此用户名已注册!</font>";
else if(result==0)
document.getElementById("testCanReg").innerHTML="<font color='red'>此用户名可用!</font>";
}
}
};
xmlHttp.send(null);
}

html代码就省略了,望高手指教,谢谢!

其实thinkphp的开发手册上写的很清楚,在2.3 部署目录里写的很明了。

你的check.php可以放在项目目录的common目录下,而且最好做成函数的形式。那个Lib目录是放Action的。
另外,那些js代码放在项目目录的Public目录下的Js里,当然你也可以自己看着办。
你的ajax调用可以试试用jquery,很方便的。
关键要多看手册。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-07-16
zhege buhuia

ThinkPHP 中系统函数有哪些
首先给大家介绍ThinkPHP函数详解:M方法 M方法用于实例化一个基础模型类,和D方法的区别在于: 1、不需要自定义模型类,减少IO加载,性能较好; 2、实例化后只能调用基础模型类(默认是Model类)中的方法; 3、可以在实例化的时候指定表前缀、数据库和数据库的连接信息; D方法的强大则体现...

ThinkPhp中M和D的区别
如果该模块不存在的话 直接返回实例化Model的对象(意义就与M()函数相同)而M 只返回 实例化 Model的对象..它的$name参数 作为数据库的表名来处理对数据库的操作 通俗点说,D就是实例化一个基于Model文件的Model,而M则是通过直接实例化Model方法(ThinkPHP基类)来动态的实例化一个Model对象,即使...

ThinkPHP 5.0和ThinkPHP 3.2的区别
URL访问支持自动定位控制器;数据库5.0的数据库查询功能增强,原先需要通过模型才能使用的链式查询可以直接通过Db类调用,原来的M函数调用可以改用db函数,例如:3.2版本M('User')->where(['name'=>'thinkphp'])->find();5.0版本db('User')...

PHP Thinkphp中开启debug 或报错
1、这个页面都出现了(典型的thinkphp页面),说明请求已经到了,是thinkphp程序抛出的一个404。但是什么情况下才会这样?2、最后发现,当关闭thinkphp的调试模式,程序错误时,不显示错误到页面,就会出现这个上面这个页面 。3、请注意thinkphp文件index.php中 4、开启调试模式:\/\/ 开启调试模式 建议开发...

php里面的一个问题,里函数经常有M、I 这一类的代表什么来的呢?_百度...
看你的代码应该用的是thinkphp框架,M和I是你用的框架中的方法,M代表把你的数据库模型实例化,I代表的是网络传值(get或者post方式传值),php没有这样的系统函数,只是你用的框架自定义的方法

为什么我ThinkPHP中做登录代码时无法使用Session
tp默认session是始终打开的,所以你不用session_start();了,直接使用session就可以了。

THINKPHP 中跨控制器调用类,跨模型调用类
Authmodel(); 是用你model目录下创建Authmodel, 它是继承 Model .比如你在Authmodel文件中写一个function fun(){...}函数;auth = new \\Model\\AuthModel();auth->fun();就可以直接调用 而M('Auth')相当于model. 只是传了'auth'表命 , 只能M('Auth')->where()->...之类的操作 ...

thinkphp 模型类的作用?
比如说你有一个user表,里面有 id name pass time(登录时间),对其的操作页面有注册,登录,修改密码等等 如果你要使用M来进行实例的话,不管是注册还是干啥,你每次都要对提交过来的信息是否合法进行一个验证,time时间每次都要使用time()函数来重新生成以下 但是如果你使用了model,使用D来实例...

thinkphp 里sql 语句如何解读???
这个不是原生写法,这是tp固有的写法,里面对语句做了封装,就是查询fields表里条件是model为空或其他条件符合的值。明白了吧!

thinkphp 几个问题求助?
假定这个Action是UserAction--->文件名UserAction.class.php \/\/登录 public function login(){\/\/操作代码暂时省略 }\/\/登出 public function loginout(){\/\/省略 }\/\/获取详细资料 public function getPorfiles($ids){ \/\/然后我想说的是这里。\/\/在这个UserAction里,你是不是需要查询一次数据库...

相似回答