几天来,我一直在寻找解决方案并尝试修复,但没有任何变化。
老板在一台 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>
<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 更环保,所以希望你们中的一个可以帮助我。