2012-05-16 47 views
2

我有一个项目,需要将数据库中的文本写入HTML5 canvas/Javascript应用程序。将内容加载到应用程序的最佳方式

要选择这个内容,我已经指定了一个属性“reference”,我可以向数据库提问内容id,例如:index.php?reference = exercise1。

我已经使用了AJAX,因为我需要将文本内容转换为一个Javascript变量才能在画布上写入数据。 我的解决方案正在工作,但我需要从Javascript document.URL中获取引用属性值,而不是PHP $ _GET。

下面是代码:

var url = decodeURIComponent(document.URL); 
var attr = "reference"; 
var attrPos = url.lastIndexOf(attr); 
var referencePos = attrPos + attr.length + 1; 
var reference = url.substr(referencePos,url.length); 

我在做什么似乎不是干净的方式给我。

首先,?reference =应该与PHP $ _GET一起使用,不能通过Javascript被黑客入侵。

然后,如果我的应用程序位于名为“reference”的文件夹中,则必须使用lastIndexOf()而不是search()方法才能获得良好的值。

如果我在名为“reference”的文件夹中使用URI(如localhost/reference/projectfolder/index.php)和数据库中名为“projectfolder”的引用将项目加载,即使我有没有要求index.php?参考=项目文件夹

从你的经验,什么是在我的情况下最好的解决方案:能够获得PHP/MySQL数据使用Javascript。阿贾克斯似乎是最好的方式,但你可以看到它不干净,至少我的解决方案。

感谢您的帮助。

+0

为什么你需要使用URI?当页面首次加载时,为什么不会将参数设置为js变量,如'<?php echo“var currentReference =”。 json_encode(($ reference?$ reference:null))。 “;” ?> – prodigitalson

+0

@prodigitalson我有一个Javascript类,外部js文件作为我的主程序,我访问并写入画布,所以我认为这不是一个好的解决方案,打印变量 – baptx

回答

1

不过,如果我有我的项目名为“引用”与URI 文件夹中的本地主机一样/参考/ projectfolder/index.php文件和数据库中的命名 “projectfolder”的提法,它会载入内容即使我 没有要求的index.php?参考= projectfolder

,如果你想,当你刚刚请求的index.php文件是空的,检查是否$ _GET [“引用”]设置然后返回一个空的身体。

从你的经验来看,在我的情况下最好的解决方案是什么:能够通过 获得使用Javascript的PHP/MySQL数据。阿贾克斯似乎是最好的方式,但你可以看到它不干净,至少我的解决方案。

检查这个要点上如何返回JSON在你的身体https://gist.github.com/2627924

+0

我需要的是在我的Javascript中返回JSON外部文件,所以我可以加载内容在画布 – baptx

+0

你得到的JSON与获取请求使用JavaScript。为什么需要首先在文件中生成这个文件,是否有任何特定的原因?然后,你将不得不这样做在PHP中,然后调用一些PHP脚本,更新您的永恒JavaScript文件之前检索它 – Joelmob

+0

我实际上正在做你所描述的,获取JSON数据与JavaScript请求(Ajax),但创建一个新的文件写内容对我来说是没有意义的,因为我已经拥有一个Javascript类,每个函数都可以在画布上进行读写操作:/ – baptx

相关问题