Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 执行<;脚本>;从单独的.php文件_Javascript_Php_Html - Fatal编程技术网

Javascript 执行<;脚本>;从单独的.php文件

Javascript 执行<;脚本>;从单独的.php文件,javascript,php,html,Javascript,Php,Html,几天来,我一直在研究(似乎是)一个简单的问题,可能需要一些帮助 我在点击按钮时调用一个php文件,执行一系列服务器端操作,并希望在php结束时更改HTML中的一些内容(更改图像、更改文本、启用按钮等) 所以,我要做的(对于这里的测试用例)是更改一个图像两次。它在第一组代码(html文件中的脚本)中工作正常,但在第二组代码(php文件中的脚本)中不工作。也就是说,我在页面加载时看到oldImage,单击按钮时看到secondImage,但从未看到newImage <button onclic

几天来,我一直在研究(似乎是)一个简单的问题,可能需要一些帮助

我在点击按钮时调用一个php文件,执行一系列服务器端操作,并希望在php结束时更改HTML中的一些内容(更改图像、更改文本、启用按钮等)

所以,我要做的(对于这里的测试用例)是更改一个图像两次。它在第一组代码(html文件中的脚本)中工作正常,但在第二组代码(php文件中的脚本)中不工作。也就是说,我在页面加载时看到oldImage,单击按钮时看到secondImage,但从未看到newImage

<button onclick="test()">Try The Test</button>
<img id="myImage" src="oldImage.jpg">
<script> 
    function test() 
    {
        var img = document.getElementById('myImage');
        img.src = 'secondImage.jpg';
        xmlhttp=new XMLHttpRequest();
        xmlhttp.open("testPhp.php",true);
        xmlhttp.send();
    }
</script>

一个可能的问题是,
onclick
中的
test()
后缺少分号。此外,您的
标记格式不正确;它的内容是
一个可能的问题是,您在
onclick
中的
test()
之后缺少分号。此外,您的
标记格式不正确;如果ajax调用返回标记,它将读取
,要使其产生任何效果,必须将其添加到DOM中

但我不建议这样做。相反,让PHP文件返回信息(不是脚本),然后让接收信息的代码(在XHR对象的
onreadystatechange
处理程序中)读取该信息并采取相关操作

例如,您的PHP可以简单地返回:

newImage.jpg
那么您的ajax调用将是:

function test() 
{
    var img = document.getElementById('myImage');
    img.src = 'secondImage.jpg';
    xmlhttp=new XMLHttpRequest();
    xmlhttp.onreadystatechange = handleReadyStateChange;
    xmlhttp.open("testPhp.php",true);
    xmlhttp.send();

    function handleReadyStateChange() {
        if (xmlhttp.readyState === 4 && xmlhttp.status >= 200 && xmlhttp.status < 400) {
            // Request is complete and successful
            img.src = xmlhttp.responseText;
        }
    }
}
功能测试()
{
var img=document.getElementById('myImage');
img.src='secondImage.jpg';
xmlhttp=新的XMLHttpRequest();
xmlhttp.onreadystatechange=handleReadyStateChange;
open(“testPhp.php”,true);
xmlhttp.send();
函数handleReadyStateChange(){
if(xmlhttp.readyState==4&&xmlhttp.status>=200&&xmlhttp.status<400){
//请求已完成并成功
img.src=xmlhttp.responseText;
}
}
}
如果您需要发回更丰富的信息(通常是这样),请查看使用。

如果您的ajax调用返回标记,则必须将其添加到DOM中才能使其生效

但我不建议这样做。相反,让PHP文件返回信息(不是脚本),然后让接收信息的代码(在XHR对象的
onreadystatechange
处理程序中)读取该信息并采取相关操作

例如,您的PHP可以简单地返回:

newImage.jpg
那么您的ajax调用将是:

function test() 
{
    var img = document.getElementById('myImage');
    img.src = 'secondImage.jpg';
    xmlhttp=new XMLHttpRequest();
    xmlhttp.onreadystatechange = handleReadyStateChange;
    xmlhttp.open("testPhp.php",true);
    xmlhttp.send();

    function handleReadyStateChange() {
        if (xmlhttp.readyState === 4 && xmlhttp.status >= 200 && xmlhttp.status < 400) {
            // Request is complete and successful
            img.src = xmlhttp.responseText;
        }
    }
}
功能测试()
{
var img=document.getElementById('myImage');
img.src='secondImage.jpg';
xmlhttp=新的XMLHttpRequest();
xmlhttp.onreadystatechange=handleReadyStateChange;
open(“testPhp.php”,true);
xmlhttp.send();
函数handleReadyStateChange(){
if(xmlhttp.readyState==4&&xmlhttp.status>=200&&xmlhttp.status<400){
//请求已完成并成功
img.src=xmlhttp.responseText;
}
}
}

如果您需要发回更丰富的信息(这种情况经常发生),请查看使用。

对于AJAX调用的响应,您没有做任何事情。换句话说:当您调用PHP脚本时,会打印出回复,但会被丢弃,因为Javascript没有对其进行任何处理。必须添加一些代码才能与回复交互。这里有一个提示:不要试图从PHP输出Javascript,而是输出您在Javascript中使用的东西

在调用
xmlhttp.send()
之后,将其添加到Javascript中:

xmlhttp.onreadystatechange=function() {
   if (xmlhttp.readyState==4 && xmlhttp.status==200) {
      document.getElementById("myImage").src = xmlhttp.responseText;
   }
}
在PHP脚本中,只需输入以下内容:

echo 'newImage.jpg';

对于AJAX调用的响应,您没有做任何事情。换句话说:当您调用PHP脚本时,会打印出回复,但会被丢弃,因为Javascript没有对其进行任何处理。必须添加一些代码才能与回复交互。这里有一个提示:不要试图从PHP输出Javascript,而是输出您在Javascript中使用的东西

在调用
xmlhttp.send()
之后,将其添加到Javascript中:

xmlhttp.onreadystatechange=function() {
   if (xmlhttp.readyState==4 && xmlhttp.status==200) {
      document.getElementById("myImage").src = xmlhttp.responseText;
   }
}
在PHP脚本中,只需输入以下内容:

echo 'newImage.jpg';

这是一个AJAX请求。这是一个AJAX请求。请添加分号
在要调用的脚本onclick之后。(我的强迫症…)你看过Chrome开发工具或Firebug吗?在那里找到您的请求,并查看是否存在任何错误。请添加分号
在要调用的脚本onclick之后。(我的强迫症…)你看过Chrome开发工具或Firebug吗?在那里找到您的请求,并查看是否存在任何错误。我们同时到达了那里+感谢您提到JSON:)非常感谢@HeikkiU和T.J+一分钟前,T.J.来了。他说:)我们同时到了那里+感谢您提到JSON:)非常感谢@HeikkiU和T.J+两人各打1分,T.J.打勾,因为他一分钟前进来了:)