переменная javascript для php-скрипта

В моем index.php у меня есть кнопка обновления, как показано ниже.

<form action="update.php" method="post" >
  <button type="submit">Update</button>
</form>

Я определил функцию javascript, чтобы переопределить действие формы по умолчанию. Функция javascript приведена ниже.

<script type="text/javascript">
$(document).ready(function() {
$('form').submit(function(e) {
  e.preventDefault();
  alert("HI");
  $.ajax({
        type: 'post',
        url: 'update.php',
        data: {
            source1: "some text",
        },
        success: function( data ) {
            console.log( data );
        }
    });
});
});
</script>

После того, как я нажимаю кнопку обновления, я получаю предупреждение. Однако меня не перенаправляют на страницу update.php, как ожидалось. Я пытаюсь отправить некоторые значения в запросе ajax, которые можно использовать для обработки на странице update.php.


person ram esh    schedule 23.01.2014    source источник
comment
Вы не будете перенаправлены, потому что у вас нет сценария перенаправления. Вы не можете использовать перенаправление PHP в вызове AJAX. И почему вы используете AJAX, если хотите, чтобы вас перенаправляли?   -  person putvande    schedule 23.01.2014
comment
Как вы получаете доступ к данным в update.php? Чем этот вопрос отличается от любого из связанных вопросов? ---›   -  person naththedeveloper    schedule 23.01.2014
comment
Вы не будете перенаправлены с помощью ajax, в этом суть ajax.   -  person superphonic    schedule 23.01.2014
comment
››Меня не перенаправляют на update.php‹‹ вашего e.preventDefault(); пропускает загрузку формы и в вашем дальнейшем коде я не могу найти никакого перенаправления...   -  person donald123    schedule 23.01.2014
comment
пожалуйста, будьте более конкретными: вы хотите, чтобы вас перенаправляли в update.php, но вы все еще используете ajax и preventDefault, которые удерживают вас на той же странице. Если вы хотите, чтобы вас перенаправили, почему вы используете вызов ajax?   -  person KB9    schedule 23.01.2014
comment
Мне нужно получить доступ к переменной javascript в файле update.php. Итак, я использую ajax для отправки значения переменной в файл update.php. Однако после отправки значения мне не нужен элемент управления в моей функции javascript.   -  person ram esh    schedule 23.01.2014


Ответы (1)


Вы не перенаправляетесь, потому что перенаправления PHP не влияют на браузер при запуске как вызов AJAX. Вам нужно указать перенаправление JavaScript в функции success:

$.ajax({
    type: 'post',
    url: 'update.php',
    data: {
        source1: "some text",
    },
    success: function( data ) {
        document.location.href = 'update.php'
    }
});

Однако я не верю, что это то, чего вы хотите. Кажется, вы хотите добавить новые данные формы при отправке формы, в которой может быть лучше предотвратить поведение по умолчанию, добавить любые дополнительные данные со скрытыми полями ввода, а затем повторно отправить форму:

  $(function ()
  {

    $('form').submit(function (e)
    {

      if ($(this).is(':not([data-submit="true"])'))
      {

        $('form').append('<input type="hidden" name="foo" value="bar">')

        $('form').data('submit', 'true').submit()

        e.preventDefault()

        return false

      }

    }
    )

  }
  )

</script>
person MichaelRushton    schedule 23.01.2014
comment
Мне нужно вызвать функцию update.php в случае успеха. Теперь я могу вызывать update.php из ajax. Однако я получаю доступ к переменной javascript, используя POST в файле update.php. Он не отображается в моем файле update.php. - person ram esh; 23.01.2014
comment
Чтобы данные отображались в переменной $_POST, их необходимо опубликовать вместе с формой. Отсюда и мой пример добавления скрытого поля ввода, содержащего значение. - person MichaelRushton; 23.01.2014