這陣子在開發php項目,對於傳值最多的方式是用request擷取。但是如果我要在一個頁面(a頁面)中點擊按鈕彈出一個另外一個頁面(b頁面),同時希望b頁面中回調的值可以傳遞到a頁面中,且在a頁面的request變數中可以擷取。
1)a頁面的內容
<html><br /><head><br /><mce:script language="javascript" type="text/javascript"><!--<br />function GoSubmit(val)<br />{<br /> alert("GoSubmit");<br /> document.getElementById("condiotionName").value = val;<br />}<br />function Show(obj)<br />{<br /> var myObject = new Object();<br /> myObject.callBackFunction = GoSubmit;<br /> window.showModalDialog("b.html",myObject);</p><p> if (document.getElementById("condiotionName").value != "")<br /> {<br /> document.getElementById("__EVENTAUGUMENT").value="showdialog";<br />document.getElementById("__EVENTAUGUMENT2").value="Click";<br />document.getElementById("__CauseValidation").value="True";alert(document.getElementById("condiotionName").value);<br />if(obj.type!="submit"){<br />document.forms[0].submit();<br /> }<br /> }<br />}<br />// --></mce:script><br /></head><br /><body><br /><form name="aaa" id="aaa"><br /><input id="test" name="test" type="text" value="aaa"><br /><input type="button" name="showdialog" value="showmodaldialog" onclick="Show(this);"><br /><input type="hidden" id="condiotionName" value=""><br /><input type="hidden" name="__EVENTAUGUMENT" id="__EVENTAUGUMENT"/><input type="hidden" name="__EVENTAUGUMENT2" id="__EVENTAUGUMENT2"/><input type="hidden" name="__EVENTAUGUMENT3" id="__EVENTAUGUMENT3"/><input type="hidden" name="__CauseValidation" id="__CauseValidation"/><br /></form><br /></body><br /></html>
php中沒有事件驅動模式,所以要自己手動添加事件驅動模式。用了window.showModalDialog的方式來掉出一個模態視窗。
通過myObject.callBackFunction 的方式來得到b頁面傳遞過來的值,並且賦給頁面上的某個元素
2)b頁面的內容
<html><br /><head><br /><mce:script language="javascript" type="text/javascript"><!--<br />function Show()<br />{<br /> var obj = window.dialogArguments;<br /> alert(document.getElementById("test").value);<br /> obj.callBackFunction(document.getElementById("test").value);<br /> window.close();<br />}<br />// --></mce:script><br /></head><br /><body><br /><form name="aaa" id="aaa"><br /><input id="test" name="test" type="text" value="bbb"><br /><input type="button" value="showmodaldialog" onclick="Show();"><br /></form><br /></body><br /></html>
通過回呼函數傳遞文字框的值給a頁面。
註:頁面中有很多alert事件是用於測試的,不喜歡的可以去掉。
3)逐步調試php,你可以發現request裡面可以取到b頁面文字框的值。