7

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

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

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

只有在 Mac Chrome 和 Safari (webkit) 上,我从 ajax 调用中得到一个错误响应,它是空白的。

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

因此,一旦单击目标元素,我就会获取用户名和密码值并发送 ajax 请求。(这应该打我的 php 文件,只是回显你好)。然而,它返回并没有任何消息的错误。我的意思是 xhr responseText 和 throwedError 都只是空白/空。

所以这里是代码:(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() ,因为我确实看到了一篇描述特殊字符和空格问题的帖子。(没有工作)成功:我包含了 status 和 xhr vars 只是为了正常调试我只是有数据。

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

我尝试在不使用 jQuery 的情况下只做 XMLHttpRequest,但我得到了同样的结果。

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

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

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

4

1 回答 1

3

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

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

于 2012-10-22T15:32:35.000 回答