AJAX不会得到PHP - echo

时间:2014-08-05 19:06:22

标签: javascript php html ajax

所以我正在尝试建立一个非常简单的网站,以学习基本的网页设计。它只是一个随机的报价生成器 - 你点击一个按钮,它打印一些着名的报价。无论如何,我尝试使用ajax来获取引用,所以我使用了这个函数:

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("quote").innerHTML=xmlhttp.responseText;
            }
    }
    xmlhttp.open("GET","RandomQuote.php",true)
    xmlhttp.send();
}

但无论我输入RandomQuote.php的内容是什么,即使它类似于:

<?php 
 echo 'Hello, world';
 ?>

引用“div”中没有任何内容,它只是变成空白。我真的不知道这里有什么问题。感谢您的帮助!

4 个答案:

答案 0 :(得分:0)

嗯,我不太确定,但你在说你的功能吗?你把你的ajax放在loadXMLDoc()中,所以你可能需要调用它。另一种方法是将ajax放入addEventListener中,这样当用户点击某些内容时,它就会执行。如果这不是问题,请尝试确保您的html页面中的元素的ID为&#34;引用&#34;拼写正确。有时后一种情况对我来说总是问题。

答案 1 :(得分:0)

    $.get( "RandomQuote.php", function( data ) {
      $( "#quote" ).html( data );
      console.log( "Load was performed." );
    });

不要忘记包含jQuery。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

答案 2 :(得分:0)

这是我的ajax函数,尝试使用它:

/**
 * @function ajax               Send ajax-request with post
 * @param  {string}   xmlpage   Target url
 * @param  {string}   data      Post parameters (like param1=val1&param2=val2...)
 * @param  {Function} callback
 * @return {null}    
 */
function ajax(xmlpage, data, callback)
{ 
    var xmlh = null;
    if(window.XMLHttpRequest)
        xmlh = new XMLHttpRequest();
    else
        try
        { 
            xmlh = new ActiveXObject("Msxml2.XMLHTTP"); 
        }
        catch(ex) 
        { 
            xmlh = new ActiveXObject("Microsoft.XMLHTTP"); 
        }
    if(xmlh)
    {
        xmlh.open("post", xmlpage, true);
        xmlh.onreadystatechange = function(x) 
                            { 
                                if(xmlh.readyState==4 && typeof callback !== 'undefined') 
                                    callback(xmlh.responseText); 
                            }
        xmlh.setRequestHeader("Accept-Language","ru, en");
        xmlh.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlh.send(data);
    }
}

答案 3 :(得分:0)

使用您问题中的代码跟踪测试文件。它工作得很好。要么你缺少某些东西,要么是浏览器问题。我在Mozilla上测试过。要确保与浏览器无关的代码使用jQuery进行Ajax调用

test.html

<html>
<script>
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("quote").innerHTML=xmlhttp.responseText;
            }
    }
    xmlhttp.open("GET","RandomQuote.php",true)
    xmlhttp.send();
}
</script>
<div id="quote"></div>
<input type="button" value="Click Me" onclick="loadXMLDoc()"/>
</html>

RandomQuote.php

<?php

echo 'hi';

更新:jQuery版

<html>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<script>
function loadXMLDoc()
{
    $.get( "RandomQuote.php", function( data ) {
      $( "#quote" ).html( data );
    });

}
</script>
<div id="quote"></div>
<input type="button" value="Click Me" onclick="loadXMLDoc()"/>
</html>