私は何日も解決策を探して修正を試みてきましたが、変更はありません。
上司はMacを使用していて、私はMacを持っていないので、修正を繰り返して出力を私に中継してもらいます。これまでのところ運がありません。
したがって、現在の設定は、検証を通過した後に送信されるユーザー名とパスワードの入力を含むフォームがあります。検証は、ユーザー名とパスワードを検証してからフォームを送信するajax呼び出しです。
Mac ChromeとSafari(webkit)でのみ、空白のajax呼び出しからエラー応答が返されます。
問題を引き起こしているのはphpではないことがわかるように、検証を行うphp関数を削除して単に「hello」をエコーしました。
したがって、ターゲット要素がクリックされたら、ユーザー名とパスワードの値を取得して、ajaxリクエストを送信します。(これは私のphpファイルにヒットし、helloをエコーするはずです)。ただし、代わりにメッセージなしでエラーが返されます。つまり、xhrresponseTextとthrownErrorはすべて空白/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()を追加しました。これは、特殊文字と空白の問題を説明する投稿を見たためです。(機能しませんでした)成功した場合:通常のデバッグのためにステータスとxhr変数を含めました。データ。
現在エラーです:これは毎回発生するものですが、すべての応答が空白または未定義です。ある種のまともなエラーが発生することを望んでいましたが、何も発生しません。現在、これは最近Mountian LionにアップグレードされたMacと、Webkit(Chrome / Safari)ブラウザーでのみ発生します。
jQueryを使用せずにXMLHttpRequestだけを実行しようとしましたが、同じことがわかりました。
これは、PCのIE、Firefox、Chrome、Safariで機能し、MacのFireFoxでも機能します。
最後に、これは以前彼のために働いていました、私は彼のアップグレードの前に信じています。
どんな助けでも素晴らしいでしょう。私は髪の毛を抜いています。jQueryではphpよりも環境に配慮しているので、誰かが私を助けてくれることを願っています。