Jquery / Ajax和IE问题

时间:2012-08-27 21:56:38

标签: jquery svn

我无法从服务器获取Ajax调用。我正在使用SVN版本控制,我的代码在我身边工作,但在我将代码推送到生产方面后遇到了麻烦。

这些代码适用于我,FF,Chrome和IE。

对于服务器,FF和chrome正在运行,但只有IE有问题。

我想知道这里是否有人可以帮助我。非常感谢。

我有

//call ajax function
callAjaxToCheck();


//call this function if there are errors
//I am getting Not connect.\n Verify Network error whose status == 0 when using IE on server side only!!!!!

function error_loading(jqXHR, exception){
    if (jqXHR.status === 0) {
        alert('Not connect.\n Verify Network.');
    } else if (jqXHR.status == 404) {
        alert('Requested page not found. [404]');
    } else if (jqXHR.status == 500) {
        alert('Internal Server Error [500].');
    } else if (exception === 'parsererror') {
        alert('Requested JSON parse failed.');
    } else if (exception === 'timeout') {
        alert('Time out error.');
    } else if (exception === 'abort') {
        alert('Ajax request aborted.');
    } else {
        alert('Uncaught Error.\n' + jqXHR.responseText);
    }                 
}

function success(data) { 
    if (data=='jump') {
        $.getScript('inc/haha.js', function() {

            codes....

        });
    }
}


function callAjaxToCheck(){  
    $.ajax({
        url: 'Session.php',
        success: success,
        dataType: "text"
        error: error_loading
    });   
}

更新了代码:

请参阅我的服务器端文件。

我确信我的ajax功能被称为......

header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');
    session_start();

     if(isset($_POST['switch'])){
         $_SESSION['image']=$_POST['switch'];

     }

     echo $_SESSION['image'];

2 个答案:

答案 0 :(得分:1)

尝试在jQuery Ajax调用中将cache设置为 false

function callAjaxToCheck() {  
    $.ajax({
        url: 'Session.php',
        cache: false,
        success: success,
        dataType: "text",
        error: error_loading
    });  
}

答案 1 :(得分:1)

jqXHR.status === 0表示没有从服务器返回任何内容 - 这可能意味着PHP端的致命错误或客户端取消请求的内容。

您的Session.php代码是否依赖于已存在的会话 - 如果找不到会话会怎样?我只是问,因为Internet Explorer与其他浏览器有不同的安全模型,因为它涉及在某些沙箱中的AJAX请求之间发送cookie - 通常情况下,它的政策是根本不发送任何cookie(你的PHP是否会将其带入帐户?)。

在客户端,您使用什么来触发callAjaxToCheck()。我知道在上面的代码中它是在程序运行中直接调用的。但是,这可能只是为了在stackoverflow上发布而进行的简化。这个AJAX调用是否曾被按钮或链接触发?

我意识到这里有一些问题没有真正说明的答案,所以我会做出有根据的猜测并说明它很可能是会话/ cookie问题。考虑到这一点,它可能有助于实现P3P策略,这可以告诉IE在AJAX请求中发送cookie - 你必须设置正确的策略,但是......这可能有点棘手;这就是为什么大多数寻求快速修复的开发人员只需将以下内容复制并粘贴到他们请求的PHP文件的顶部:

header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');

我不建议这样做,但它可以快速找出是否有帮助。