我几天来一直在寻找解决方案并尝试修复,但没有任何改变。
老板使用的是 Mac,而我没有,所以我让他尝试重复修复并将输出转发给我。到目前为止还没有运气。
因此,当前的设置是,我有一个包含用户名和密码输入的表单,该表单在经过验证后提交。验证是一个 ajax 调用,它验证用户名和密码,然后提交表单。
仅在 Mac Chrome 和 Safari (webkit) 上,我从 ajax 调用中收到空白的错误响应。
我已经剥离了进行验证的 php 函数,以简单地回显“hello”,这样我就知道不是 php 导致了问题。
因此,一旦单击目标元素,我就会获取用户名和密码值并发送 ajax 请求。 (这应该击中我的 php 文件并回显 hello)。然而,它返回错误且没有任何消息。我的意思是 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(),因为我确实看到了一篇描述特殊字符和空格问题的帖子。(不起作用)成功:我包含了状态和xhr变量只是为了正常调试我只是有数据。
现在错误:这是每次都会出现的情况,但是所有响应都是空白或未定义。我希望得到某种像样的错误,但我什么也没得到。现在,这仅适用于最近升级到 Mountian Lion 的 Mac 以及 Webkit (Chrome/Safari) 浏览器。
我尝试只使用 XMLHttpRequest 而不使用 jQuery,但得到了同样的结果。
这适用于 PC 上的 IE、Firefox、Chrome 和 Safari,也适用于 Mac 上的 FireFox。
最后,我相信在他升级之前,这对他来说是有效的。
任何帮助都会很棒。我正在抓狂,我对 jQuery 比 php 更陌生,所以希望你们中的一个人能帮助我。