Как отправить форму на странице, к которой обращается AJAX? - PullRequest
0 голосов
/ 05 января 2011

Я пытаюсь выяснить, как отправить форму на странице, к которой обращается AJAX?

Вот несколько фрагментов кода, которые помогут продемонстрировать то, что я пытаюсь сказать.

ТЕЛО HTML - ЭТО ТО, ЧТО УВИДЕТ ПОЛЬЗОВАТЕЛЬ:

  <html>
    <head>
     <script language="javascript" src="linktoajaxfile.js">
    </head>
    <body onLoad="gotoPage(0)">
    <div id="fillThis">
    </div>
  </body>
</html>

Ajax-файл:

var xmlhttp

function gotoPage(phase)
{
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
  {
  alert ("Your browser does not support AJAX!");
  return;
  }
var url="pageofstuffce.php";
url=url+"?stg="+phase;
url=url+"&sid="+Math.random();
xmlhttp.onreadystatechange=stateChanged;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

function stateChanged()
{
if (xmlhttp.readyState==4)
{
document.getElementById("fillThis").innerHTML=xmlhttp.responseText;
}
}

function GetXmlHttpObject()
{
if (window.XMLHttpRequest)
  {
  // code for IE7+, Firefox, Chrome, Opera, Safari
  return new XMLHttpRequest();
  }
if (window.ActiveXObject)
{
// code for IE6, IE5
return new ActiveXObject("Microsoft.XMLHTTP");
}
return null;
}

СТРАНИЦА ДАННЫХ:

<?php
  $stage = $_GET['stg'];

  if($stage == 0)
  {
     echo '<a onClick="gotoPage(1)">click me</a>';
  }
  elseif($stage == 1)
  {
    <form>
      <input type="text" name="name">
      <input type="submit" name="submit">
    </form>
  }
  elseif(somehow can reach here)
  {
     show data from form.
  }
?>

Как пройти форму и отобразить данные на той же странице?

Я попытался отправить форму самому себе (тот же файл), которая уничтожила ссылку AJAX и открыла страницу. Я также пытался просто заставить кнопку переместить страницу на другой шаг, но переменная $_POST пуста.

Ответы [ 4 ]

1 голос
/ 05 января 2011

эй, вы можете перейти по этой ссылке

http://www.ajaxlines.com/ajax/stuff/article/how_to_submit_a_form_with_ajax_in_jquery.php

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

0 голосов
/ 05 января 2011

Вот сценарии, которые вы ищете.

pageofstuffce.php

<?php
  $stage = $_GET['stg'];

  if($stage == 0)
  {
     echo '<a onClick="gotoPage(1)">click me</a>';
  }
  elseif($stage == 1)
  {
    echo '<form>
      <input type="text" name="name">
      <input type="submit" name="submit">
    </form>';
  }
  else
  {
     echo 'show data from form.';
  }
?>

Ваш HTML

<html>
    <head>
        <script type="text/javascript" language="javascript" src="linktoajaxfile.js"></script>
        </head>

    <body onload="gotoPage(0)">
        <div id="fillThis">
        </div>
    </body>
</html>

Javascript для создания Ajax Calls linktoajaxfile.js

var xmlhttp

function gotoPage(phase)
{


xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
  {
  alert ("Your browser does not support AJAX!");
  return;
  }
var url="pageofstuffce.php";
url=url+"?stg="+phase;
url=url+"&sid="+Math.random();
xmlhttp.onreadystatechange=stateChanged;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

function stateChanged()
{
if (xmlhttp.readyState==4)
{
document.getElementById("fillThis").innerHTML=xmlhttp.responseText;
}
}

function GetXmlHttpObject()
{
if (window.XMLHttpRequest)
  {
  // code for IE7+, Firefox, Chrome, Opera, Safari
  return new XMLHttpRequest();
  }
if (window.ActiveXObject)
{
// code for IE6, IE5
return new ActiveXObject("Microsoft.XMLHTTP");
}
return null;
}

Надеюсь, это поможет!

Спасибо!

Хуссейн.

0 голосов
/ 05 января 2011

Привет для отображения результата или формы на той же странице вы можете использовать

form method = "POST" action =

или если вы хотите использовать ajax, то напишите одну функцию в jqueryчто-то вроде вызова этой функции () {

$. ajax ({type: 'POST',
url: 'путь к тому же имени файла? action = submit', // data u вы хотите передать данные: ',
success: function () {

}
});

} // функция заканчивается

и ваш php-код проверяет, если $ _GET['action'] есть тогда выполнить свою функцию

Спасибо

0 голосов
/ 05 января 2011

Я думаю, что в вашем коде есть ошибка. Вы нигде не устанавливаете переменную сцены.

Посмотрите на:

url=url+"?stg="+phase;

Возможно, вам придется изменить stg => stage. Никаких других проблем не возникает.

...