Php 如何在AJAX访问的页面中提交表单?

Php 如何在AJAX访问的页面中提交表单?,php,ajax,forms,form-submit,Php,Ajax,Forms,Form Submit,我试图弄清楚如何在AJAX访问的页面中提交表单 下面是一些代码片段,帮助演示我要说的内容 HTML正文-这是用户将看到的内容: <html> <head> <script language="javascript" src="linktoajaxfile.js"> </head> <body onLoad="gotoPage(0)"> <div id="fillThis">

我试图弄清楚如何在AJAX访问的页面中提交表单

下面是一些代码片段,帮助演示我要说的内容

HTML正文-这是用户将看到的内容:

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

<?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链接,并打开了页面。我也尝试过让按钮将页面移动到另一个步骤,但是
$\u POST
变量是空的。

我认为您的代码中有一个bug。您没有在任何地方设置阶段变量

看看:

url=url+"?stg="+phase;
可能您必须更改stg=>stage。
没有发现任何其他问题。

您好,在您可以使用的同一页面中显示结果或表单

form method=“POST”操作=

或者,如果您想使用ajax,那么在jquery中编写一个函数,如下所示 函数调用(){

$.ajax({ 类型:'POST',
url:“相同文件名的路径?操作=提交”, //你想传递的数据 数据:',
成功:函数(){

}
}))

}//功能结束

和你的php代码 检查是否存在$\u GET['action'],然后执行ur函数


谢谢

嘿,你可以浏览这个链接


如果有任何与此相关的问题,请告诉我这里是您正在寻找的脚本

pageOfStufce.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.';
  }
?>
希望这会有帮助

谢谢


侯赛因。

是的,对不起,我正在使用旧代码,并试图为代码片段进行修复。。再检查一次,它能工作。你能不能弄清楚你卡在哪里了。根据我的理解,你可以看到形式,即stage=1。然后你提交表格,接下来会发生什么?从代码看,似乎整个页面都重新加载了?这就是问题所在吗?基本上是这样。我只是想知道如何在调用Ajax的页面中提交表单和显示数据。让我重新表述一下——我想知道如何在Ajax调用的页面中提交表单,并在不丢失Ajax连接的情况下以相同的表单显示表单?这有意义吗?好的,那就用你的表格试试这个吧。这实际上将调用方法gotoPage(),而无需在单击submit时重新加载页面。您甚至可以从那里访问输入字段,如document.getElementByName(“名称”)。value您可以进一步隔离问题吗?php的
页面是否打开?它是否响应/返回您的期望?在其中添加一些警报,手动转到
pageoftuffce.php
。精确一点,这样我们可以帮助更好耶,对不起,第一次在这里发帖,我还是掌握了窍门。。无论如何,是的,它做了我期望它做的,直到提交表格。通常我提交表单的方法是将表单操作链接回同一个文件,并在文件的开头有一个
if($\u POST['submit'])
子句,然后再继续。。现在不行了,因为这样做,它会将
页面加载到浏览器中,而不是用ajax调用它。有没有一种方法可以提交表单,然后从页面访问数据,而不必在浏览器中加载文件?嘿,Sanil,谢谢你,但我从来没有见过jQuery,更不用说写剧本了。。你认为你可以给我一个链接,我可以从中学习,或者做一个脚本,我可以更好地理解请?感谢您是否希望使用ajax在同一页面中显示结果?是的,但这可以在从ajax本身调用的页面中完成吗?是的,在您的提交按钮上调用一个js函数,该函数将通过ajax调用其他文件,如前所述……谢谢。这是可行的,但仅当您查看加载到浏览器中的实际文件时;如果文件是通过Ajax调用的,那么尝试这样做,它似乎不起作用。你能更深入地解释一下问题是什么吗?我正在通过Ajax调用一个文件,在调用的文件中,有一个表单。我希望能够以这种形式提交数据,并访问数据,而无需转到其他页面。
<?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>
    <head>
        <script type="text/javascript" language="javascript" src="linktoajaxfile.js"></script>
        </head>

    <body onload="gotoPage(0)">
        <div id="fillThis">
        </div>
    </body>
</html>
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;
}