winsonnxl 发表于 2012-8-15 15:01:09

请高手指教AJAX疑难问题!

小弟不才,遇到了很头疼的问题,特来请教各位大虾。
问题如下:
小弟用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!!!!

winsonnxl 发表于 2012-8-15 15:02:26

期待各位大虾相救!

跟屁虫 发表于 2012-8-15 16:13:37

多看jquery的手册,jquery已经把ajax封装得很好了,基本不存在兼容性问题了

终结者 发表于 2012-8-15 16:41:03

一般jquery没有兼容类的问题的。你查看下调用的路径和写法。
贴出code看下。

linlaoye1988 发表于 2012-8-15 18:21:26

说jquery与ci不兼容,就是说javascript与PHP不兼容

blcygzs 发表于 2012-8-15 18:22:05

这跟ci有关系?

winsonnxl 发表于 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
var ajaxFunc = $.ajax({
async:false, //we have to set it to false, it does not return a value before we even complete the request.
data:’email=John@yahoo.com’,
type:’POST’,
url:’/index.php/controller_name/email_check’,
dataType:’text’,
});
if(ajaxFunc.responseText == 1) {
return true;
}
else {
$(‘#errormess’).attr(‘innerHTML’, “Duplicate Email address”);
return false;
}


Controller:
function email_check()
{
$email= $this->input->post(‘email’);
$this->load->model(‘validation_model’, ”, TRUE);
$emailCheck=$this->validation_model->emailCheck($email);
if( $emailCheck > 0 )
{
echo ’0′;
}
else {
echo ’1′;
}
}
添加了async:false果然解决了我说的问题。
但我就奇怪了,众仁兄们就没有这样的问题?我看论坛里贴的代码,全部都使用的默认(true)。
还是因为我的用的版本Jquery1.7~1.8有BUG?

wx2650 发表于 2012-8-15 20:25:04

老实说,别说用jq来ajax了,就算是我自己写的js来ajax都没出现过兼容性问题

haimi 发表于 2012-8-16 21:20:53

建议将ajax代码写成单独的函数
同时我对data:'email=John@yahoo.com’存疑,
我用的书写格式是:
data:{
“email”:'John@yahoo.com’
}
dataType: "json",

ciogao 发表于 2012-8-16 23:05:49

输出头信息要指定资源类型为json
页: [1] 2
查看完整版本: 请高手指教AJAX疑难问题!