使用AJAX获取文件,无法读取PHP

时间:2011-02-16 20:49:03

标签: php ajax url fetch text-files

我已经检查了发布前提出的建议,希望我现在没有错过任何内容。

我有一段代码用于为我的网站获取txt文件,但现在我需要重做代码以便它获取txt和php文件,但它只是不会读取php脚本。我现在有点害怕搞乱代码,所以我走在安全的路边,问这里是否有人知道代码的好处。令人尴尬的是我仍然拥有IE 5& 6中的代码,所以如果你想同时删除它,请继续。我保证,我不会恨你的。

更新:
我有四个文件:
html - 使用ajax脚本调用.js文件 js - 用我所有的javascript(和simular) - 代码 php - 包含......嗯,你明白了。

我必须以某种方式调用php代码,就像我调用我的txt文件一样,但当然这样php就可以了。我是AJAX的新手,所以我现在不敢乱用这段代码,但我想我可以添加一些if语句来调用php文件,因为它是打算是。
但我不知道该代码可能是什么以及在哪里将其用于相应的工作。当然,任何帮助都会在代码中得到认可和记入。

继承了.js文件中包含的AJAX代码:

/*Load the link.*/
function loadXMLDoc(url)
{
    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("leftCol").innerHTML=xmlhttp.responseText;
    }
    }
    xmlhttp.open("GET",url,true);
    xmlhttp.send();
}
/*Highly unnecessary, but I wanted to see if it worked and it looks better on the .html-page.*/
function get_link(url)
{
  loadXMLDoc(url);
}

2 个答案:

答案 0 :(得分:3)

正如上述评论者所说,最好使用第三方工具来处理这类事情 - 除非大大增加跨浏览器的兼容性。

如果您使用jQuery,则代码将缩减为。

function get_link(url)
{
    $.ajax({url: url, success: success:function(result){
            //the code / resulting string will be in the result variable.
    }});
}

jQuery CDN托管:http://code.jquery.com/jquery-1.5.min.js

让我问一下......如果你将代码更改为

function get_link(url)
{
    window.location=url;
}

您的网络浏览器是否成功导航到您尝试通过AJAX检索的页面?如果没有,您的PHP语法可能存在问题。

答案 1 :(得分:1)

it just won't read the php-script

这是一个相当模糊的陈述,但这里有一些可能是解决方案的指针:

PHP文件在服务器上被解释,所以当你对该页面进行Ajax调用时,你在客户端收到的是那个php脚本的结果,而不是他的内容

您直接在HTML中分配查询结果,如果结果包含不呈现任何内容的数据,您将看不到任何内容。例如,内容<script>Text here bla bla bla</script>将不会显示任何内容。

如果您想确保从文件中获取某些数据,则可以在收到内容时提醒内容。

确保您的PHP页面路径正确无误。要检测文件是否没有给出404错误代码或任何其他错误代码,您可以使用:

xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4) {
        if (xmlhttp.status == 200) {
            document.getElementById("leftCol").innerHTML = xmlhttp.responseText;
        } else {
            alert("Error " + xmlhttp.status);
        }
    }
}