Я искал решения и исправил исправления в течение нескольких дней, но без изменений.
Человек-босс находится на Mac, и у меня его нет, поэтому я попробую повторить исправления и передать результат мне. Пока не повезло.
Таким образом, текущая настройка имеет форму с именами пользователей и паролей, которые отправляются после проверки. Валидация – это вызов ajax, который проверяет имя пользователя и пароль, а затем отправляет форму.
Только на Mac Chrome и Safari (webkit) я получаю сообщение об ошибке от вызова ajax, который пуст.
Я лишил функцию php, которая делает проверку, чтобы просто откликнуться «привет», так что я знаю, что проблема не в php.
Таким образом, после нажатия целевого элемента я получаю значения имени пользователя и пароля и отправляю запрос ajax. (который должен ударить мой php-файл и просто echo hello). Однако вместо этого он возвращается и ошибка без сообщения. Я имею в виду, что xhr responseText и 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 vars только для отладки, как правило, у меня просто есть данные.
Теперь по ошибке: это то, что происходит каждый раз, но все ответы пустые или неопределенные. Я надеялся получить какую-то приличную ошибку, но ничего не получаю. Теперь это только на Mac, недавно обновленном до Mountian Lion и только в браузерах Webkit (Chrome / Safari).
Я пробовал делать только XMLHttpRequest без использования jQuery, и я получаю то же самое.
Это работает в IE, Firefox, Chrome и Safari на ПК, а также работает в FireFox на Mac.
Наконец, это работало для него ранее, я считаю, до его обновления.
Любая помощь будет большой. Я вытягиваю свои волосы, я более зеленый на jQuery, чем php, поэтому, надеюсь, один из вас может мне помочь.
Это проблема конфигурации. Проблема возникла, если домен был введен без ведущего www. на доменное имя.
Добавление заголовка ('Access-Control-Allow-Origin: *'); в файл php разрешает это. Вы можете указать конкретные домены, чтобы разрешить или использовать *.