3

我正在创建一个全球高分表。JavaScript 通过一些 AJAX 函数和 POST 将用户名和分数发送给 PHP。然后 PHP 脚本获取该变量,并将得分值与服务器上的文件进行比较。然后它将新的乐谱放在乐谱表上应该放在的位置,并重写文件。

我昨晚让它工作了,但是现在,当我调用该函数时,它会显示我的代码,并且 firebug 给出错误“未找到元素”。我不确定从那时到现在我做了什么,但我就是想不通这个。

这是我第一次使用 PHP 和 AJAX,所以我不确定错误在哪里或是什么。任何帮助,将不胜感激!

确切的错误:

Timestamp: 4/13/2013 1:59:18 PM
Error: no element found
Source File: file:///C:/wamp/www/ajax.php
Line: 84, Column: 3
Source Code:
?>
4

1 回答 1

2

如果我无法帮助您解决此问题,我将删除此答案,但我想这样发布,以便您更好地阅读我的建议。

首先将您的HandleResponse功能更改为:

function HandleResponse(response)
{
  console.log(response);
  document.getElementById('ResponseDiv').innerHTML = response;
}

并在萤火虫中发布出现在错误上方的结果。

我们在这里所做的是为我们添加一种方法来查看是否有任何数据实际上是从 AJAX 请求返回的。调用console.log告诉浏览器将给定的参数打印到控制台(在你的情况下,萤火虫)。

更新 1

在您的评论中,您说当您记录response. 这意味着您没有从服务器收到任何反馈(至少在数据方面)。

我的下一个建议是您将调用更改MakeRequest为以下内容:

<input type='button' id="test" onclick='MakeRequest("*");' value='Global Highscore Table'/>

像以前一样,在方法中保留该console.logHandleResponse,然后在 firebug 中发布错误上方出现的结果。

在这里,我们设置您MakeRequest发出一个传递通配符查询参数的请求。在提出这个建议时,我没有意识到请求的文件需要两个参数,也没有意识到传递通配符会使脚本出错。但是,这仍然是一件好事,因为我们发现了一个新错误,它告诉我们正在接收请求。

更新 2

现在,将“ajax.php”文件中的所有内容剪切并粘贴到记事本或其他类似的应用程序中。然后,将以下内容设置为“ajax.php”文件的唯一内容:

<?php echo "Request received and response sent"; ?>

再次,发布console.log.

在这里,我们从修复复杂的代码后退了一步,我们将回到基础。在这里,我们要做的就是验证我们是否可以发送请求并接收响应。

如果"Request received and response sent"作为请求的响应成功返回,那么我们知道错误出在 ajax.php 中,而不是在请求中。如果不是,我们知道请求存在问题(无论是服务器问题还是请求本身)。如果是后者,ajax.php 仍然可能有问题,但我们必须先修复请求。

更新 3(最终解决方案)

发现问题是由于在本地服务器上未正确运行。

于 2013-04-13T19:29:57.953 回答