【发布时间】:2016-08-03 18:44:50
【问题描述】:
我这几天一直在寻找解决方案并尝试修复,但没有任何改变。
老板在 Mac 上,我没有,所以我让他尝试重复修复并将输出转发给我。到目前为止还没有运气。
因此,当前设置是,我有一个包含用户名和密码输入的表单,在通过验证后提交。验证是一个 ajax 调用,它验证用户名和密码,然后提交表单。
仅在 Mac Chrome 和 Safari (webkit) 上,我从空白的 ajax 调用中收到错误响应。
我已经剥离了执行验证的 php 函数以简单地回显“hello”,这样我就知道不是 php 导致了问题。
因此,一旦单击目标元素,我就会获取用户名和密码值并发送 ajax 请求。 (这应该会打到我的 php 文件并回显你好)。然而,它返回并没有任何消息的错误。我的意思是 xhr responseText 和 throwedError 都只是空白/null。
这里是代码:(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>
<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 更环保,所以希望你们中的一个可以帮助我。
【问题讨论】:
-
你的办公室有代理吗?
-
您是否使用了 Fiddler (fiddler2.com/fiddler2) 之类的工具来检查请求和响应?
-
很遗憾,我与有问题的机器不在同一个位置。它也不是办公室,而是个人住所。
-
我会在某个时候去 Mac 商店尝试调试,直到他们把我踢出去
-
为了任何想知道的人的利益。我去了 Apple 商店,在 6 台具有相同操作系统和浏览器的不同 Mac 上进行了试用,并且在所有这些 Mac 上都可以正常工作。所以我只需要弄清楚他的机器上是什么导致了问题。