Проблемы с Jquery .post и Google Chrome на сервере Linux - PullRequest
1 голос
/ 06 октября 2011

После выполнения теста за тестом и создания новых скриптов я обнаружил, что в chrome возникают проблемы с этой частью моего скрипта jquery:

 $(document).ready(function(){

    $(".subto").click(function() {
    var data = {ramp: ramp, toilet:toilet, door:door, blind:blind,
    dog:dog, assist:assist, ear:ear, lift:lift, park:park, ramped:ramped, star:star
    };
     levelramp(data);
   });


function levelramp(ramp,toilet) {
    var url = "http://youraccessguru.com/sesstest1.php";
    $.post(url, {ramp: ramp},function(data) {
       $("#text").val(data).show();
    });

    }

http://youraccessguru.com/sesstest.php Чтобы получить ошибку, все еще зависит от того, как долго вы нажимаете кнопки, попробуйте ее увидеть. Если вы как можно скорее нажмите на картинку и отправьте скрипт, он будет работать но если вы нажмете назад и подождите 30 секунд на странице, затем выберите и нажмите «Отправить», подсветка не изменилась бы и не работала.

Первая кнопка в любом случае не работает, отдельный вопрос просто оставьте неустановленным.

Сайт отлично работает в любом другом браузере, кроме Google Chrome

1 Ответ

1 голос
/ 06 октября 2011

Первая проблема, которую я вижу, заключается в том, что вы привязываете запрос POST к кнопке отправки, которая отправляет свою собственную форму, и вы не препятствуете отправке этой формы.Таким образом, ваш скрипт делает это, когда вы нажимаете subto:

  1. Запустить ajax-публикацию на http://youraccessguru.com/sesstest1.php
  2. Сразу после этого выполните обычный запрос POST на http://youraccessguru.com/sesstest.php без данных

Обратите внимание, что это может даже не произойти по порядку.Я понятия не имею, что на самом деле делает номер 2, но я предполагаю, что он перенаправляет вас на sesspreview.php, если он получает данные POST.

Итак, у вас есть 2 варианта.Если вы хотите обновить страницу, вам совершенно не нужно использовать ajax-запрос.Если вы все еще хотите использовать ajax, прекратите отправку обычной формы и перенаправьте ее на sesspreview.php в функции завершения ajax.

EG:

$(function(){
  $(".subto").click(function(e) {
    e.preventDefault();
    var data = {ramp: ramp, toilet:toilet, door:door, blind:blind, dog:dog, assist:assist, ear:ear, lift:lift, park:park, ramped:ramped, star:star};
    levelramp(data);
  });


  function levelramp(ramp,toilet) {
    var url = "http://youraccessguru.com/sesstest1.php";
    $.post(url, {ramp: ramp}, function(data) {
      window.location.href = "sesspreview.php";
    });
  }
});

Конечно, это зависит откак ваши файлы PHP настроены и что они на самом деле делают.Я понятия не имею, поэтому, если вы отправляете данные в sesspreview.php, это не сработает.

РЕДАКТИРОВАТЬ: Хорошо, так что вы продолжаете использовать AJAX, а затем обычный POST для отправки остальных данных.В этом случае сначала отправьте AJAX, затем дождитесь ответа AJAX, прежде чем отправлять оставшуюся часть формы.Дайте вашей форме идентификатор, а затем используйте такой код:

$(function(){
  $(".subto").click(function(e) {
    e.preventDefault();
    var data = {ramp: ramp, toilet:toilet, door:door, blind:blind, dog:dog, assist:assist, ear:ear, lift:lift, park:park, ramped:ramped, star:star};
    levelramp(data);
  });


  function levelramp(ramp,toilet) {
    var url = "http://youraccessguru.com/sesstest1.php";
    $.post(url, {ramp: ramp}, function(data) {
      $('#formID').submit();
    });
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...