简单的 AJAX DataGrid 显示问题

Posted

技术标签:

【中文标题】简单的 AJAX DataGrid 显示问题【英文标题】:Simple AJAX DataGrid display problem 【发布时间】:2011-05-21 09:35:28 【问题描述】:

我有一个 ajax 数据网格,它显示客户购物车中的商品列表,并让他们编辑这些数量,然后更新数据库。

它在本地主机上的我的个人深渊网络服务器上完美运行。但是当我将它上传到我的 www.winhost.com 服务器时,它永远不会显示网格!这是完全相同的代码!我不知道该怎么办,我已经尝试了我能想到的一切。任何帮助表示赞赏,请帮助!

谢谢!

【问题讨论】:

您不应该在此处将您的登录名和密码发布到您的数据库中。如有必要,将其更改为星星或弥补。哦,既然每个人都看到了,你也应该改变它...... 哦,废话,我以为我删除了它!非常感谢彼得! 完成。现在一切都好。感谢您指出这一点。 附注:extract()ing $_GET 和 $_POST 是一个非常糟糕的主意。你不知道里面有什么(你永远不会知道,因为你对它的控制为零)。 你能提供一个带有数据库脚本的 zip 文件,也许我可以帮助击球手 【参考方案1】:

想到的一些事情可能值得仔细检查:

    您的数据库是否包含数据? 是否正确加载了您的 javascript 引用?使用 firebug 进行验证。 您是否检查过任何 php 错误?就像 require_once() 失败的语句一样?

您可以通过将此 PHP 放在执行任何其他代码之前进行检查:

error_reporting(E_ALL); 
ini_set('display_errors', '1'); 

暂时能想到的就这些了。

【讨论】:

谢谢彼得,是的,在执行任何其他代码之前我确实有上面的代码,但它从来没有显示任何东西,所以我改变了一些东西,试图修复任何错误,但是依然没有。我使用了萤火虫,在那里找不到任何问题,是的,数据库包含东西。 奇怪的是,这个脚本在本地主机上的深渊网络服务器上完美运行,但当我将完全相同的文件上传到正确的托管服务提供商 winhost 时就不行 我已经与我的托管服务提供商仔细检查了要求,他们确实支持此脚本所依赖的所有最新内容 你有没有注意到你的函数声明之后的 html 是如何从不呈现的?这就是让我怀疑你的 PHP 错误的原因。尝试将function BuildTable 放在页面顶部?或者逐块注释掉代码,以确定失败的原因。我想不出任何其他原因。 谢谢那个彼得,我现在试试看:)【参考方案2】:

您发布的代码大多与问题无关 - 负责呈现表格的位在 AjaxDataGrid.class.php 中

生成的 html 有很多依赖项 - 检查您是否可以从浏览器访问每个 javascript 和 css 文件。

我从您的问题中假设 require_once() 语句和网格之后的内容呈现正常 - 即脚本没有停止,因为它无法读取包含文件。

【讨论】:

我现在发布 AjaxDataGrid.class.php 文件,谢谢你告诉我 :)【参考方案3】:

看这里是我在您的 ajax 处理程序中注释掉任何事情的策略,然后尝试自己创建一些数据,看看是否可以在客户端获取数据如果不能,请检查您的 ajax 请求,使用这段代码打印您的$_GET 值。

ob_start();
print_r($_GET);
$output = ob_get_clean();
file_put_contents('debug.txt',$output);

我相信你会发现如果它不起作用尝试在一个小规模的测试版本中进行你的 ajax 调用,这听起来很有趣但它可以帮助我很多时间找出问题所在。

p>

我希望这些对您有所帮助,而且我没有任何其他想法,因为我从来没有比这更多...... :)

祝你好运!

【讨论】:

感谢您的代码,我会尝试您的建议,看看情况如何! @Lucifer: 您好 :) 请检查我删除的代码中是否有多余的行。【参考方案4】:

由于帮助不足(但非常感谢),我已经用替代方法解决了这个问题。

我决定推出自己的 PHP/AJAX 可编辑数据网格。当我很快有时间时,我将完全免费发布它(没有开源,只是免费),并将使用源代码链接编辑此答案。

感谢大家的帮助和努力。 :)

【讨论】:

【参考方案5】:

我不确定出了什么问题,因为我现在只在页面上看到“选择数据库”,但由于它在一个系统上运行而不是在另一个系统上运行,因此错误可能是写入 ajax 日志文件?

顺便说一句,我现在在您网站的其他几个页面上收到了一堆 Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'username'@'192.168.110.101' (using password: YES) in E:\web\username\configurations.php on line 10 Could not connect: Access denied for user 'username'@'192.168.110.101' (using password: YES) 错误,但也许您只是在处理它。

【讨论】:

对不起,Spiny,我昨晚更新了我的帐户信息,这可以解释该错误。现在已经解决了:) 这正是我的问题 - 它从不显示任何内容,它实际显示的只是告诉你该做什么的标题,它不显示网格,也不显示数据库列表或表格名称可供选择。 你能试着把var_dump($result); var_dump(mysql_error());放在$result=mysql_list_dbs();之后看看会发生什么吗?也许出了点问题,或者你只是没有得到任何结果:) 另外,我非常同意你不应该像这样使用 extract() ......如果我没记错的话,有人可以使用 ?db_host=some.host.name 并嗅探你的登录凭据(我不是 hax0r) 另外,你有我可以使用的示例表名吗?我看到一个可用的数据库被称为 mysql_9269_dbase (从永远不会被调用的行;)),但我没有看到表列表,所以我看不到当你提供一个有效的表时会发生什么......跨度> 【参考方案6】: 您似乎没有发布 checkout.php 的代码。

我可以从 html 的开头看到 title 标签与在另一个页面上看到的不同,在该页面上没有生成您的网格。

我猜你当然是在检查服务器上的正确页面。

但是有些东西强烈表明您的问题是因为一些琐碎的事情,而不是代码本身。 .. 我从 那里得到这种感觉

“..它在我的本地服务器上工作,但在主机上失败..”。

按照上面的思路,人们在另一台机器上托管时通常会错过的东西是:

一个。检查错误的页面..同时更新错误的脚本

b.认为他们已经更新了服务器上的脚本..而他们的 FTP 上传脚本实际上由于某种原因没有更新文件...并且旧代码仍然存在本地修复的旧问题。

c。您的php 可能有错误,但由于某种原因它被忽略并且页面生成完成.. 可能您应该在有问题的 php 页面的第一行尝试error_reporting(E_ALL);.. 还要确保display_errors 标志和相关服务器上php ini 上的错误标志是真的.. 如果它们不应该是你的主机管理员可以帮助更改标志..

d。您的托管服务器和开发服务器具有不同的 php 参数或配置,您应该首先了解这些参数或配置。您应该在本地服务器上生成一个 phpinfo() 页面,并将其输出与来自托管服务器的类似页面结果进行比较。

除了上面的,你也可以看看这个,

在结帐页面上,我看到甚至没有生成任何网格代码..所以这不是 javascript 隐藏某些东西的问题.. javascript 也不会在浏览器上抛出任何错误.. 所以它可能很简单网格类文件本身未包含在结帐页面上的适当位置。或者如果您能够在页面上看到 php 错误,可能会出现一些微不足道的东西。

因为您的代码可以在您的机器上或本地运行。我假设您不需要调试或更改任何代码,除非您从 phpinfo 比较缺失的 deps 中看到任何令人毛骨悚然的东西,或者在error_reporting(E_ALL) 之后看到错误

【讨论】:

以上是关于简单的 AJAX DataGrid 显示问题的主要内容,如果未能解决你的问题,请参考以下文章

IE浏览器下easyui的datagrid无法显示和列显示不齐解决方案

使用 MVVM 模式在 WPF DataGrid 中显示/隐藏行功能

WPF:DataGrid.RowDetailsTemplate:仅在选择单行时显示详细信息?

如何使 WPF DataGrid 显示具有绑定和 DataTemplate 的 ViewModel 集合

jquery easyui datagrid 的分页,为啥总是显示所有的数据啊,哪位大虾帮忙看看啊,下面是代码

使用 jQuery 突出显示选定的 ASP.NET DataGrid 行