2011-01-05 53 views
0

我想弄清楚如何在被Ajax访问的页面中提交表单?在Ajax访问的php文件中提交表单?

这里有一些代码片段来帮助证明我想说的。

HTML BODY - 这是用户将看到的内容。

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

AJAX FILE

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; 
} 

DATA

<?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. 
    } 
?> 

页谁能也许帮我把过去的形式,并在同一页面中显示的数据? 另外,我环顾四周,我不认为周围有什么我需要...纠正我,如果我错了,但:) :)

在此先感谢,我希望我没有把太多的细节:) Dronnoc

编辑
忘了提我已经试过;我已经尝试将表单提交给自己(同一个文件),并且销毁了ajax链接,并打开了页面。我也尝试只是将按钮移动到另一个步骤的页面,但$ _POST变量是空的...我无所适从,其他人有什么想法吗?

+0

你能否将问题隔离一点? “pageofstuffce.php”是否打开?它回应/返回你的期望?在那里添加一些警报,手动转到'pageofstuffce.php'。精确定位一点,所以我们可以帮助更好 – 2011-01-05 06:16:13

+0

是啊,对不起,第一次在这里发布,我仍然得到的东西......无论如何,无论如何,它是做我所期望的,直到提交表单。通常,我要提交表单的方法是将表单操作链接回同一个文件,并在文件的开始处有一个'if($ _ POST ['submit'])'子句,它将从那里..现在不起作用,因为在这样做的时候,它会将'pageofstuffce.php'加载到浏览器中,而不是用ajax调用它。 – 2011-01-05 06:20:13

+0

有没有一种方式可以提交表单,然后可以从页面访问数据,而无需在浏览器中加载文件? – 2011-01-05 06:20:41

回答

1

哎U可以通过这个链接

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

让我知道,如果有的话对此起诉

+0

谢谢。这是有效的,但只有当你查看加载到浏览器中的实际文件时才有效;如果通过Ajax调用文件,然后尝试执行此操作,它似乎不起作用。 – 2011-01-05 07:24:07

+0

你可以更深入地解释什么是问题? – lampdev 2011-01-05 09:54:33

+0

我正在通过ajax调用一个文件,并且在被调用的文件中有一个表单。我希望能够以这种形式提交数据,并访问数据,而不必转到其他页面。 – 2011-01-05 12:06:51

0

我认为你的代码中存在一个错误。你没有在任何地方设置舞台变量。

看:

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

也许你将不得不改变英镑=>阶段。 没有看到任何其他问题。

+0

是啊,对不起,我正在使用旧的代码,并试图修复它的片段..再次检查,它的工作原理.. – 2011-01-05 05:28:14

+0

你可以有点清楚你卡在哪里。根据我的理解,你会看到表格,即stage = 1。然后你提交表格,接下来会发生什么?从代码看来,整个页面重新加载?这是什么问题? – Ankit 2011-01-05 05:38:17

+0

差不多吧。我只想知道我可以如何提交表单并在调用Ajax的页面中显示数据。 – 2011-01-05 05:57:57

0

嗨显示结果或形式在同一页面u可以使用

形式方法=“POST” ACTION =

或者如果u想AJAX使用,然后写在jQuery的像一个功能这 函数调用(){

$阿贾克斯({ 类型: 'POST',
网址:'路径文件名相同?行动=提交 ' //数据u想要传递数据 :',
成功:函数(){

}
});

} //函数结束

和UR PHP代码 检查,如果$ _GET [ '行动']有则执行乌尔功能

感谢

+0

嘿桑尼尔,谢谢你,但我从来没有见过jQuery,更别说试图编写脚本。你认为你可以或者给我一个链接,我可以从中学习,或者做一个脚本,我可以理解请稍微好一点?谢谢 – 2011-01-05 06:43:52

+0

你是否想用ajax在同一页面显示结果? – lampdev 2011-01-05 06:45:45

+0

是的,但是可以在从ajax本身调用的页面中完成吗? – 2011-01-05 06:51:26

0

以下是您正在查找的脚本。

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调用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; 
} 

希望这会帮助!

谢谢!

Hussain。