jQuery ajax调用在Mac Safari和Chrome浏览器上返回空错误

时间:2012-10-19 18:13:08

标签: php jquery ajax

我一直在寻找解决方案并尝试修复几天,但没有任何变化。

老板的人在Mac上我没有,所以我让他尝试重复修复并将输出转发给我。到目前为止没有运气。

当前的设置是,我有一个带有用户名和密码输入的表单,在经过验证后提交。验证是一个ajax调用,它验证用户名和密码然后提交表单。

仅在Mac Chrome和Safari(webkit)上,我收到来自ajax调用的错误响应,该响应为空。

我已经剥离了执行验证的php函数,只需回显“hello”,这样我就知道它不是导致问题的php。

因此,一旦点击了目标元素,我就会获取用户名和密码值并发送ajax请求。 (这应该打我的PHP文件,只是回声你好)。但是它返回并且没有消息的错误。我的意思是xhr responseText和thrownError都只是空白/空。

所以这是代码:(HTML)

<form id="signin_form" method="POST" action="index.php?cmd=Signin">
        <table id="welcomeSignin">
            <tr>
            <td>
                    <div class="welcome"><span class="signin-title-text f-xxlarge-or-link-goth">Welcome Back!</span></div>
                    <div id="error_msg"></div>
                    <table id="input_field_table">
                        <tr>
                                <td class="input-field-cell">
                                    <div class="singin-titles f-medium-gr-bold">Username</div>
                                </td>
                                <td class="input-field-cell">
                                    <div class="signin-inputs"><input class="signin styled" type="text" name="user_name"></div>
                                </td>
                        </tr>
                        <tr>
                            <td class="input-field-cell">
                                <div class="singin-titles f-medium-gr-bold">Password</div>
                            </td>
                            <td class="input-field-cell">
                                <div class="signin-inputs"><input class="signin styled" type="password" name="user_pass"></div>
                                <div class="forgot"><a href="" class="forgot-password f-small-or-link">Forgot your password?</a></div>
                            </td>
                        </tr>
                        <tr>
                            <td colspan="2">
                                <input type="hidden" name="post_type" value="signin">
                                <span id="create"><span class="f-medium">Don't have an account? <a href="" class="create"><span class="f-medium-or-link">click here</span></a></span></span> &nbsp;
                                <span class="active-login"><input type="checkbox" class="signin-radio" name="active_login"> <span class="f-medium"> Keep me signed in</span></span>
                                <div id="sign_in"><span class="signin-submit-button"><img src="../images/ready-create-icon.png"></span> <span class="signin-submit-text f-xxxlarge-gr-title-link">Sign In!</span></div>
                            </td>
                       </tr>
                    </table>
                </td>
            </tr>
    </table>

没什么特别的。这是jquery篇:

$('#sign_in').click(function(){
    var url = window.location.href;
    $('#error_msg').html('');
    var username = $('input[name="user_name"]').val();
    var password = $('input[name="user_pass"]').val();
    var err = '';
    $.ajax({
        url: ajaxUrl+'validate_signin',
        type: 'GET',
        cache: false,
        data: { username: encodeURIComponent(username), password: encodeURIComponent(password)},
        success: function(data, status, xhr){
            if(data !== 'OK'){
                err = data;
                $('#error_msg').html(err);
                return false;
            }else{
                $('#signin_form').submit();
                return false;
            }
        },
        error: function(xhr, ajaxOptions, thrownError){
            var tmp_err = "";
            tmp_err = ":: "+xhr.responseText+" :: "+xhr.responseXML+" :: ";
            alert(tmp_err);
            alert(xhr.responseText);
            alert(thrownError);
            window.location.href = url;
            }
        });
        return false;
});

php文件只是:echo“hello”;出口;只是为了避免任何测试错误。

这里有一些东西,我添加了encodeURIComponent(),因为我确实看到一篇文章描述了特殊字符和空格的问题。(没有用)成功:我包含状态和xhr变量只是为了正常调试我只有数据。

现在出错:每次都会出现这种情况,但所有回复都是空白或未定义的。我希望得到一些体面的错误,但我什么都没得到。现在,这只适用于最近升级到Mountian Lion的Mac,而且仅限于Webkit(Chrome / Safari)浏览器。

我尝试不使用jQuery只做XMLHttpRequest而且我得到同样的东西。

这适用于PC上的IE,Firefox,Chrome和Safari,它也适用于Mac上的FireFox。

最后这对他来说很有用,我相信在他升级之前。

任何帮助都会很棒。我把我的头发拉出来,我在jQuery上比php更环保,所以希望你们中的一个可以帮助我。

1 个答案:

答案 0 :(得分:3)

这是一个配置问题。如果在没有前导www的情况下输入域,则会出现问题。在域名上。

添加标题('Access-Control-Allow-Origin:*');到php文件解决了这个问题。您可以指定允许或使用*。

的特定域