如何为jQuery编码大型HTML列表?

时间:2011-10-16 17:51:28

标签: php mysql html ajax database

我有一个PHP脚本,可以获取相对大量的数据,并将其格式化为HTML无序列表,以便在Ajax应用程序中使用。

考虑到数据的大小是几十到可能超过一百KB,并且我希望能够使用Javascript区分不同的列表,那么最好的方法是什么?

我考虑过json_encode,但是当请求超过一定数量的行时,会导致[null](可能是PHP内存限制?)。

非常感谢, 费拉

5 个答案:

答案 0 :(得分:2)

字符串中的某些非法字符可能会破坏PHP中的json_encode()函数,您需要清理它才能正常工作。如果这成为一个问题,你可以使用正则表达式来做到这一点。

但是,如果您要发送包含该数据量的请求,则使用AJAX发送此请求可能是不明智的,因为您的应用程序似乎非常无响应。最好直接从数据库获取这些数据,因为这将是一个更快的方法,尽管你必须明显妥协。

答案 1 :(得分:1)

我无法点击,但我同意Daniel West。

确保您的字符串是UTF-8编码的,或者在连接时使用mysql_set_charset('utf8')。不幸的是,拉丁语/ Windows是mysql的默认字符集。 Null是编码失败的结果,因为如果内存不足,脚本本身就会失败。

答案 2 :(得分:0)

我会通过JSON传递数据,并以小批量进行,可以逐步显示。这将使它看起来更快,并可能解决您遇到的内存问题。如果滚动上方的数据(前40行左右)加载速度很快,那么如果页面的其余部分需要几秒钟加载,则可以。如果你想变得棘手,你甚至可以加载第一页然后等待滚动事件来加载其余部分,所以如果用户从不滚动查看下面的数据,你就不必过多地命中服务器。滚动条。如果php从json_encode返回null,则是因为无效字符。如果您无法控制数据,您只需将HTML从服务器发送到客户端并避免所有编码/解码,但这意味着需要传输更多数据。

答案 3 :(得分:0)

使用jquery,您可以将无序列表转换为ajax应用程序中的javascript数组。

$.map( $('li'), function (element) { return $(element).text() });

此外,下划线作为javascript数组和集合的一些非常简洁的函数。 http://documentcloud.github.com/underscore/

答案 4 :(得分:0)

我更喜欢JSON,我认为' null'你从PHP编码得到的是jSON的使用javaScript的双重转义机制。我在另一篇文章中对此进行了解释。

你需要双重转义特殊字符(一个可疑的' null'因为在你的情况下是' \ n')

json parse error with double quotes