所以我试图从父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());
答案 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";
?>