求助:php+ajax问题

haigou20 2009-05-06 08:36:20
php调用ajax时报undefined错误,代码如下.
ajax.js:
var xmlHttp;
//xmlhttp对象初始化
function createXMLHttp()
{
if(window.XMLHttpRequest)
{
xmlHttp = new XMLHttpRequest();
}
else if(window.ActiveXObject)
{
try
{
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e)
{
alert(e);
}
}
}
}

function ajaxService(url)
{
createXMLHttp();
xmlHttp.open("GET",url,true);
xmlHttp.onreadystatechange = callback;
xmlHttp.send(null);
}

function callback()
{
if(xmlHttp.readyState == 4)
{
if(xmlHttp.status == 200)
{
var result = result = xmlHttp.responseText;
return result;
}
}
}

test.html:
<script type="text/javascript">
function startService()
{
var text = document.getElementById("text").value;
var ddd = ajaxService("service.php");
alert(ddd);-----此处弹出的提示框的信息是:undefined(请问怎么回事呢)
}
</script>
<input type="text" id="text"/>
<input type="button" onclick="startService()" value="test"/>

service.php:
<?
echo "1";
?>
...全文
68 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
只能说楼主没学好js和ajax

第一,你的ajaxService方法都没有return语句返回值。你只是在状态处理函数callback中使用了return返回值而已,这样先不考虑ajax的异步性,你至少也需要给ajaxService加一个return语句。


第二,你的状态处理函数callback使用return语句没有什么用途。他只是处理ajax的状态而已,你返回值给谁啊???你可以设置一个全局变量如ajaxResult来接受ajax的返回值。这样还是不够的,因为你使用了异步提交,这样有可能在你的ajax返回信息前就执行了下面红色那句,所以也可能是undefined。
var ajaxResult//改为全局变量

function startService()
{
var text = document.getElementById("text").value;
ajaxService("service.php");
alert(ajaxResult);
}


所以要解决你的问题,可以有2种办法。

第一,把ajax改为同步,不需要状态处理了。如下
function ajaxService(url) 
{
createXMLHttp();
//xmlHttp.open("GET",url,true);
xmlHttp.open("GET",url,false); //同步提交
//xmlHttp.onreadystatechange = callback;
xmlHttp.send(null);
return xmlHttp.responseText//=====================要注意要返回,要不就是默认返回undefined
}




第2,使用全局变量,详细介绍在上面了,只是你不能在startService() 方法中alert结果,要在状态处理函数中alert

function callback() 
{
if(xmlHttp.readyState == 4)
{
if(xmlHttp.status == 200)
{
//========================不需要return,你return了也没用
ajaxResult = xmlHttp.responseText;
alert(ajaxResult)
}
}
}





最后需要注意的是你使用了get方法提交,这个在ie下会出现缓存的问题。最好在url后夹个时间戳防止ie的缓存。


 ajaxService("service.php?_dc="+new Date()); 
sy_binbin 2009-05-06
  • 打赏
  • 举报
回复
var xmlhttp = false; //创建一个新变量 request 并赋值 false。使用 false 作为判断条件,它表示还没有创建 XMLHttpRequest 对象。
function CreateXMLHttp(){
try{
xmlhttp = new XMLHttpRequest(); //尝试创建 XMLHttpRequest 对象,除 IE 外的浏览器都支持这个方法。
}
catch (e){
try{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); //使用较新版本的 IE 创建 IE 兼容的对象(Msxml2.XMLHTTP)
}
catch (e){
try{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); //使用较老版本的 IE 创建 IE 兼容的对象(Microsoft.XMLHTTP)。
}
catch (failed){
xmlhttp = false; //如果失败则保证 request 的值仍然为 false。
}
}
}
return xmlhttp;
}
xmlhttp = CreateXMLHttp();
xmlhttp.open("get","service.php",true);
xmlhttp.onReadyStateChange = getResult;
xmlhttp.send(null);
function startService(){
if(xmlhttp.readyState == 4&& xmlhttp.status == 200){
alert(xmlhttp.responseText);
}
}
UCHOME二次开发交友程序 v2.0 GBK :主要特点:1、优化会员注册页面,全部采用ajax无刷新提示;2、强大而灵活的邮件提醒机制:N天未登录提醒、同城好友推荐提醒、生日提醒等,有效提升会员粘性;3、增加礼物中心。礼物中心可在后台添加新分类、新礼物,并且可以设置礼物价格、VIP会员折扣等;4、VIP支付中心。升级VIP会员后可查看对方联系方式,拥有更多主动权,同时可优先在搜索结果中排名优先,可在网站显著位置推荐、首页推荐等。优化和美化元VIP支付模块,界面更清爽直观,功能更直接适用。用户在线支付后可以自动升级为VIP会员,或自动更新M币增加,真正实现了在线支付的自动化、自助化;5、用户可申请首页推荐,管理员收到通知后可以选择是否通知,并告知其理由;6、将首页的会员推荐和排行榜推荐分开,排行榜推荐单独用页面展示,用户用积分即可自动申请上榜;7、增加会员顶部黄金推荐位功能,用户点击后可以申请,按天数收费,费用额度可以由站长设定。此为增加站长盈利渠道的方式;8、增加诚信星级认证系统,将资料完整度、相片数、是否设置头像、是否通过身份通认证、用户近30日登陆天数、空间访问人气等指标综合,得出星级,根据会员的资料完整度进行星级标识;9、增加心灵匹配测试系统,用户通过测试后,能够更好地了解自己和他人。通过测试后,会在其个人主页解读其恋爱类型和交往提示;10、增加梦缘推荐功能,用户设置择偶标准后,系统会按照最后登录、活跃度等指标,为其推荐同城异性会员;11、扩充会员资料,增加择偶标准、个性资料、约会宝典、幸福宣言等分类,方便用户更好地了解自己和他人;12、增加求助中心,用户可悬赏积分提出问题,回答满意者可以结贴赠送积分。也可以增加悬赏积分。;13、增加1 1约会功能,用户通过身份通实名认证后,可以发起约会邀请,感兴趣的会员可以表示关注、报名等等操作。;14、增加成功故事功能,交友成功的会员可以发布两个人的爱情故事,与大家一起分享他们的幸福快乐!;15、增加后台管理功能,用户的用户名、密码等等全部个人信息,几乎都可以在后台方便地修改更新;16、增加短信管理功能,可以在后天方便地浏览、删除;17、可以在后台设置首页推荐会员、首页相片推荐、排行榜推荐等等;18、可以在后天更改会员头像;19、用户注册添加ajax验证输入框效果,可实时监测用户名、email是否合法、是否已注册;用户名限制不能N位为数字(N可自定义),防止用户用手机号码或者qq注册。20、完善过滤机制,在留言板、相片和博客评论等处的信息,如果包含4位以上数字或email信息者,发布失败,弹出完善资料,通过站内联系或者升级vip之类的友情提示!21、保留uchome和uc架构,方便后续版本的升级,方便用户自行安装插件扩展、个人空间模板等;22、首页幻灯片可在后台方便添加、删除和编辑;23、增加恋爱资讯模块,管理员可以发布、编辑、删除资讯!24、后台添加关键词和描述编辑功能,方便搜索引擎收录!25、后台可编辑关于我们-隐私策略-会员条款-联系我们等页脚信息;26、增加完善的互助中心系统。管理员可以发布网站使用的帮助主题,会员也可以提出问题,然后全体会员帮助你解答,构建和谐互助的交友氛围!27、附带完整的全新安装和升级教程,只需鼠标操作,几分钟就可搭建起一个和点梦缘交友网一模一样的交友网站!28、增加同城异性会员定期推荐邮件功能,对于N(N的数值可在后台配置)天未登录的会员,可以向其邮箱发送同城异性会员推荐邮件!
asprain论坛是一个适合于各中小学、中专、技校、职高建设校园论坛、师生交流论坛,一些教科研部门、公司企业建设内部论坛、IT技术爱好者建设技术交流论坛的免费论坛程序。它有两个版本,分别是asp+Access版和asp+sqlServer版,功能完全一致,建站者可以根据自己的需要选用不同的版本。 Asprain论坛体积小巧,但是功能完整。它前端脚本基于jquery框架,跨浏览器性能出色。对IE6、IE7、IE8、firefox、Chrome、Saferi、Opera七种主流浏览器有良好的兼容性。可以轻松松换肤,制作个性皮肤也很方便,只要修改几个css就可以了。 asprain论坛使用了大量的ajax效果,不仅能够很有效地节省数据流量、应付网络拥堵,而且极酷的脚本动画和遮罩框效果也能使用户获得更好的应用体验。在asprain里,用户切换隐身/在线状态、更换自己的头像、版主删除水帖、加亮优秀帖等很多操作,都只要一键完成,不需要页面刷新或者跳转。asprain论坛还支持版主批量删帖、转移帖子、将帖子设为精华等等操作,并支持用户对帖子的评分、举报帖子等功能。 asprain论坛使用了一个非常独创的可视化UBB在线编辑器,实现了真正的所见即所得的UBB编辑,安全与便捷兼顾。在asprain论坛的在线编辑器中,可以做到一键插入本地图片、一键完成远程图片上传、轻松插入优酷网等视频网站上的的视频地址、插入回复可读、付费可读等标记,还可以插入程序代码。asprain论坛使用了改进版的chili插件,UBB标签[code]****[/code]能够很好地对javascript、php、asp、sql、css、html、C++、C#、Delphi、java、locus这十种开发语言进行语法高亮(这个功能对IT技术爱好者建设技术交流论坛非常有用)。 asprain论坛自带无图版、rss订阅等功能,即将推出wap版(手机版)。asprain支持滚动公告条、帖子引用通告、邮件群发、自定义论坛访问统计代码等功能,支持下载统计、支持文件反盗链、支持支付宝、财付通绑定。用户可以通过支付宝、财付通两种在线支付通道进行站内积分充值。站内积分可以用于悬赏求助、购买付费可读帖的阅读权、下载权等。这既方便了用户,也给站长增加了收入来源。 asprain自带五套漂亮的皮肤,表情和头像都非常可爱搞笑,而且可以轻松更换。网站头也可以根据需要轻松修改。asprain论坛支持多种论坛广告形式,包括页头广告、页脚广告、帖子中的文字广告、帖子右边的图片广告、全屏浮动广告、左右对联广告、页面右下角的弹出广告等。所有的广告位都支持循环轮播。也就是说,你可以在同一个广告位中插入十几条广告内容,然后前台会自动从这十几条预设广告中轮流播送。循环轮播广告比固定广告更容易抢得眼球,不易带来视觉疲劳。 如果你想学习研究asp编程技术或者jquery开发技术,也不妨来下载这个程序。 asprain论坛的后台界面也很漂亮,模仿了yeah邮件的标签功能,而且还可以搜索后台功能。 这个程序初始管理员用户名是Admin,前台密码和后台密码都是987654321。安装方法是:把下载包里的两个文件install.asp和asprain.asa解压出来,放到服务器空间根目录上,然后访问http://yourdomain/install.asp,然后填写几个表单,程序会自动把文件解压出来的。这样可以使论坛安装更方便,因为不需要再把几百个小文件通过ftp上传了,保需要把两个大文件传上去就

52,782

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧