Форма автоматической отправки ajax не работает - PullRequest
1 голос
/ 29 июня 2011

Я передаю некоторую переменную из одного файла в другой файл php, который содержит форму через jQuery ajax. На странице формы, на которую передаются данные, чтобы иметь следующий код: значения передаются правильно, а поля заполняются правильными записями, я могу сделать это с помощью ответа firebug, но страница автоматическая отправка Это что-то, что я должен искать, что препятствует автоматической отправке формы. Если я получаю доступ к странице формы напрямую, я вижу, как автоматически отправляются работы.

<?php 
$title = $_POST['title'];
$wrapper = $_POST['wrapper'];?>

<form action="test.php" method="post" id="publish">
  <input type="text" value="<?php echo $title ?>" name="title">
  <textarea name="wrapper"><?php echo $wrapper?></textarea>
  <input type="submit" value="Submit">
</form>

<script>
 window.onload = function(){
 document.getElementById('publish').submit();
}
</script>

ajax-код, который отправляет значения, выглядит следующим образом

$.ajax({
   type: "POST",
   url: "process.php",
      data: {
     title: 'test',
     wrapper: 'testing123'
     },
   success: function(msg){
     alert( "Data Saved: " + msg );
   } 
});

Ответы [ 5 ]

2 голосов
/ 29 июня 2011

Найдите разницу:

getElementById('publishForm')

id="publish"
1 голос
/ 29 июня 2011

Из того, что я вижу, автоматическая отправка связана с publishForm

Однако идентификатор вашей формы "publish"

Это, вероятно, причина того, что код не работает.

0 голосов
/ 30 июня 2011

Насколько я понял, этот HTML загружается через AJAX, верно?Если это так, то window.onload не будет запущен, так как страница уже была загружена (AJAX не считается).Просто сделайте это:

<script type="text/javascript">
   document.getElementById('publish').submit();
</script>
0 голосов
/ 30 июня 2011

Возможно, вы должны показать нам код вызывающего абонента вместо кода обработчика. Скорее всего, вы имеете дело с тем, что JS не запускается во время вызова AJAX - обработка страниц PHP выполняется на стороне сервера.

Вы могли бы посмотреть на отправку формы, используя PHP Curl вместо JS? Это, вероятно, решит проблему, при которой он работает, загружается напрямую, но не работает при вызове с другой страницы.

0 голосов
/ 29 июня 2011

РЕДАКТИРОВАТЬ

Чтобы разобрать это:

  • Ваш код на SourcePage.php (я создал это имя для справки) публикует данные для обработки.php через AJAX-запрос
  • process.php затем вставляет «title» и «wrapper» в html-разметку и возвращает html с некоторым javascript в SourcePage.php
  • Вы ожидаетеотображение полученной строки (msg) возвращенного html в SourcePage.php приведет к выполнению javascript в этой строке.

Чтобы это работало, вам нужно будет сделать несколько вещей.

  1. Извлечь входящий JavaScript из HTML.
  2. Добавление входного проанализированного HTML-кода в разметку SourcePage.php.
  3. Передача проанализированного JavaScript-кода в функцию JavaScript eval .

Выполнение этого должно принести страницу из process.php и успешно выполнить код JavaScript на SourcePage.php.

Если вы ожидали, что JavaScript будет работать на сервере, то, я боюсь, вы ошибаетесь, поскольку сервер (среда выполнения php) не будет выполнять JavaScript на сервере.Возможно, перенаправление на сервер достигнет вашей цели (что бы это ни было).

Оригинал

Попробуйте это: http://jsfiddle.net/NiceGuy4263/eJLMS/

...