【问题标题】:Fetching file with AJAX, can't read PHP使用 AJAX 获取文件,无法读取 PHP
【发布时间】:2011-02-16 20:49:02
【问题描述】:

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

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

更新:
我有四个文件:
html - 使用 ajax 脚本调用 .js 文件。
js - 使用我所有的 javascript(和模拟)代码。
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);
}

【问题讨论】:

  • 是否考虑过使用 Jquery 或 mootools 之类的库?绝对让这样的日常任务变得更容易。

标签: php ajax url fetch text-files


【解决方案1】:

正如上述评论者所说,最好使用 3rd 方工具来处理此类事情 - 如果没有其他原因,只是为了大大提高跨浏览器兼容性。

如果你使用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 语法可能有问题。

【讨论】:

  • 我非常怀疑这会解决 OP 问题。使用 3rd 方工具有助于简化执行 Ajax 的代码,但它并不能神奇地解决与 Ajax 调用相关的所有问题。使用 jQuery 并不能解决所有问题。
  • 我同意,我从未说过会。我说我建议它有多种原因,包括兼容性。
  • 它现在不读取任何 php 代码,即使是简单的 echo "";。我会用这个尝试jquery,看看我是否可以让它工作。我需要在页面上的 div 中打开它,就像网站上的所有其他链接一样,所以我真的不知道如何处理你最后的代码。
【解决方案2】:

it just won't read the php-script

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

PHP 文件在服务器上进行解释,因此当您对该页面进行 Ajax 调用时,您在客户端收到的是该 php 脚本的 result,而不是他的 内容.

您直接在 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);
        }
    }
}

【讨论】:

  • 不知道现在是否让它变得不那么模糊了,但我更新了帖子。
  • 嗯...我想我明白这是如何工作的。只要我有一个脚本,从 .php 文件中收集任何东西都有问题。当我这样做时,我会看看发生了什么。看看它是否能让我上路。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-15
  • 2015-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多