作者chrisQQ (ChrisLiu)
看板Ajax
标题Re: [问题] Ajax的.open问题
时间Sat Oct 2 14:32:44 2010
1F:→ TonyQ:$q 会是什麽 成员吗? (因为你的event trigger原始码目前 10/02 12:32
http://tinyurl.com/2f4jb3b 新的
※ 编辑: iii125 来自: 140.127.220.28 (10/02 12:35)
2F:→ TonyQ:看起来好像是成员变数没出去的问题。 10/02 12:41
3F:→ TonyQ:$q 改写成 $this->q 并把$q 放到成员去宣告应该会work。 10/02 12:42
4F:→ TonyQ:in php5 10/02 12:42
5F:→ TonyQ:chris 你帮他看看吧 php 你比我熟 XD 10/02 12:42
竟然被点名了 -_____-
基本上这个问题嘛… 就是你没有 new 一个 EvnetTrigger 的物件
所以这一页只是定义了一个 class 叫做 EventTrigger
然後就结束了…
最简单的最法就是前面加上
$et = new EventTrigger();
不过让 class 中直接取 $_GET 中的值感觉很怪
但如果你坚持的话,那应该改成这样
class EventTrigger{
var $dbh;
var $q;
public function __construct() {
$this->dbh = mysql_connect ("*", "root", "*") or die ('I
cannot connect to the database because: ' . mysql_error());
mysql_select_db ("exp");
mysql_query("SET NAMES = utf8");
mysql_query("SET CHARACTER_SET_CLIENT = utf8");
mysql_query("SET CHARACTER_SET_RESULTS = utf8");
$this->q=$_GET["q"];
}
// 然後後面有 $q 的地方都改成 $this->q;
// 直接用 $q 好像也可以,只要 function 中没有同样名称的 parameter
// 但既然都用了 OO 就建议养成良好习惯
function UpdateExp($exp,$stren,$level)
{
mysql_query("UPDATE usr_info SET
usr_exp='$exp',strength='$stren',level='$level' WHERE usr_id='
$this->q' ");
}
所以我会建议你如果要用 OO 的写法的话,应该写成
$et = new EventTrigger($_GET['q']);
class EventTrigger{
var $dbh;
var $q;
// 兼容有一个参数和没丢参数给 constructor 的时候
// 在 java 和 c# 中要分开写不同参数数量的 constructor
public function __construct($q = NULL) {
$this->dbh = mysql_connect ("*", "root", "*") or die ('I
cannot connect to the database because: ' . mysql_error());
mysql_select_db ("exp");
mysql_query("SET NAMES = utf8");
mysql_query("SET CHARACTER_SET_CLIENT = utf8");
mysql_query("SET CHARACTER_SET_RESULTS = utf8");
$this->q=$q;
}
// 以下类推
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 219.85.187.167
※ 编辑: chrisQQ 来自: 219.85.187.167 (10/02 14:35)