2011-01-05 51 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。