用户
 找回密码
 入住 CI 中国社区
搜索
查看: 6191|回复: 13
收起左侧

[AJAX] 请高手指教AJAX疑难问题!

[复制链接]
发表于 2012-8-15 15:01:09 | 显示全部楼层 |阅读模式
小弟不才,遇到了很头疼的问题,特来请教各位大虾。
问题如下:
小弟用CodeIgniter做项目,使用jquery中的.ajax()出现了很奇怪的问题,在FireFox和Chorme下总是失败,返回的状态(XMLHttpRequest.status)为0,错误解释是未连接。可是在IE下没有问题。
小弟开始怀疑是CodeIgniter框架与Jquery冲突问题,于是尝试在框架外直接使用Jquery ajax没有任何问题。后又把ajax中的URL设置为CodeIgniter内的路径,也没有问题。
但问题就是,只要是在CodeIgniter内的View页面使用Jquery的ajax就会出现IE正常,其他都返回“0”。
还有更奇怪的,在断点调试的时候,只要断点设置在AJAX的最后一行,也就是“}”上,Chorme就能接收数据,断点要是在其他位置,全部返回error!!!!

 楼主| 发表于 2012-8-15 15:02:26 | 显示全部楼层
期待各位大虾相救!
发表于 2012-8-15 16:13:37 | 显示全部楼层
多看jquery的手册,jquery已经把ajax封装得很好了,基本不存在兼容性问题了
发表于 2012-8-15 16:41:03 | 显示全部楼层
一般jquery没有兼容类的问题的。你查看下调用的路径和写法。
贴出code看下。
发表于 2012-8-15 18:21:26 | 显示全部楼层
说jquery与ci不兼容,就是说javascript与PHP不兼容
发表于 2012-8-15 18:22:05 CI中国手机版 | 显示全部楼层
这跟ci有关系?来自: iPhone客户端
 楼主| 发表于 2012-8-15 19:22:53 | 显示全部楼层
本帖最后由 winsonnxl 于 2012-8-15 19:27 编辑

感谢各位的回复,我通过google找到了解决方法。
老外的文章里说"async:false, //we have to set it to false, it does not return a value before we even complete the request."
http://www.softwaybd.com/blog/?p=23
PHP复制代码
[color=#ffffff]var ajaxFunc = $.ajax({
[color=#ffffff]async:false, //we have to set it to false, it does not return a value before we even complete the request.
[color=#ffffff]data:’email=John@yahoo.com’,
[color=#ffffff]type:’POST’,
[color=#ffffff]url:’/index.php/controller_name/email_check’,
[color=#ffffff]dataType:’text’,
[color=#ffffff]});
[color=#ffffff]if(ajaxFunc.responseText == 1) {
[color=#ffffff]return true;
[color=#ffffff]}
[color=#ffffff]else {
[color=#ffffff]$(‘#errormess’).attr(‘innerHTML’, “Duplicate Email address”);
[color=#ffffff]return false;
[color=#ffffff]}

 
[b]Controller:[/b]
[color=#ffffff]function email_check()
[color=#ffffff]{
[color=#ffffff]$email= $this->input->post(‘email’);
[color=#ffffff]$this->load->model(‘validation_model’, ”, TRUE);
[color=#ffffff]$emailCheck=$this->validation_model->emailCheck($email);
[color=#ffffff]if( $emailCheck > 0 )
[color=#ffffff]{
[color=#ffffff]echo ’0′;
[color=#ffffff]}
[color=#ffffff]else {
[color=#ffffff]echo ’1′;
[color=#ffffff]}
[color=#ffffff]}
复制代码

添加了async:false果然解决了我说的问题。
但我就奇怪了,众仁兄们就没有这样的问题?我看论坛里贴的代码,全部都使用的默认(true)。
还是因为我的用的版本Jquery1.7~1.8有BUG?
发表于 2012-8-15 20:25:04 | 显示全部楼层
老实说,别说用jq来ajax了,就算是我自己写的js来ajax都没出现过兼容性问题
发表于 2012-8-16 21:20:53 | 显示全部楼层
建议将ajax代码写成单独的函数
同时我对data:'email=John@yahoo.com’存疑,
我用的书写格式是:
data:{
  “email”:'John@yahoo.com’
}
dataType: "json",
发表于 2012-8-16 23:05:49 CI中国手机版 | 显示全部楼层
输出头信息要指定资源类型为json
来自: iPhone客户端

本版积分规则