2014-02-26 74 views
-1

因此,我試圖從父HTML文檔訪問一個PHP函數,該函數位於使用遠程PHP文件加載的iFrame中。我這樣做的全部原因是因爲我正在使用goDaddys Website Builder,它不允許用戶上傳PHP腳本。因此,我上傳了一個PHP文件,用於在我自己的FTP上進行測試,並能夠通過將iFrame的src鏈接到我的FTP服務器上的PHP文件的URL來訪問PHP文件。從父文檔訪問iFrame中的PHP函數

到目前爲止,我只是測試,看看這是否會工作,所以現在的功能是非常簡單的。

下面是HTML:

<iframe id="targetFrame" src="http://terrefhosting.net/arcpickup/test.php" style="width: 90%; height: 300px;"></iframe> 
<input onclick="alert('test0'); phpFunction();" type="button" value="Click me"></input> 

這裏是JavaScript:

function phpFunction(){ 
    alert("test1"); 
    alert(document.getElementById('targetFrame').contentWindow.mailReceipt()); 
    alert("test2"); 
} 

這裏是我的PHP文件中的代碼:

<?php 

function mailReceipt(){ 
    return "test"; 
} 

?> 

當我點擊按鈕運行phpFunction onClick,我開始提醒(「test1」);這意味着我在JavaScript中的這一行失敗:

alert(document.getElementById('targetFrame').contentWindow.mailReceipt()); 
+6

您的混合您的JS和PHP,iframe或沒有,你不能調用JS從有 – 2014-02-26 19:20:06

+0

是一個PHP函數***客戶端***和***服務器端***之間的區別***您不能使用客戶端腳本調用服務器端功能 – Zword

+1

還試圖圍繞主機限制「黑客」是一個可怕的想法,當移動主機是太簡單;而godaddy是這個星球上最糟糕的東道主 – 2014-02-26 19:22:09

回答

0

使用AJAX。當用戶觸發事件時,您的Javascript使用XMLHttpRequest object將請求發送到您的服務器。

然後,另一個Javascript函數或事件提供了一個處理服務器輸出的地方。

* 的OP提供的解決方案:

onclick = loadXMLDoc(); 

function loadXMLDoc() { 
var xmlhttp; 
if (window.XMLHttpRequest){ // code for IE7+, Firefox, Chrome, Opera, Safari 
xmlhttp=new XMLHttpRequest(); 
} 
else { // code for IE6, IE5 
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
} 

xmlhttp.onreadystatechange=function() { 
if (xmlhttp.readyState==4 && xmlhttp.status==200) 
{ 
    document.getElementById("targetFrame").innerHTML=xmlhttp.responseText; 
} 
} 
var url = "http://******hosting.net/arcpickup/test.php"; 
xmlhttp.open("GET", url , true); 
xmlhttp.send(); 
} 

PHP:

<?php 
echo "test"; 
?> 
+0

你正在向一個小孩解釋微積分,並說你不能有負sqrt更容易 – Qchmqs