从父文档访问iFrame中的PHP函数

时间:2014-02-26 19:17:07

标签: javascript php html iframe

所以我试图从父HTML文档访问一个PHP函数,该函数位于加载了远程PHP文件的iFrame中。我这样做的全部原因是因为我使用的是goDaddys网站构建器,它不允许用户上传PHP脚本。所以我上传了一个PHP文件,用于在我自己的FTP上进行测试,并且能够通过将iFrame的src链接到我的FTP服务器上的PHP文件的URL来访问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());

1 个答案:

答案 0 :(得分: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";
?>