假设我想打开一个PHP页面而没有其他请求,将一些JSON数据直接传递给浏览器,因此我的Javascript函数可以访问它。
我不知道这样做的正确方法,但我现在所做的是这样的事情:
<textarea id="mydata" style:"display:none">[{code:1,name:'John'},{code:2,name:'Mary'},{code:3,name:'Paul'}]</textarea>
我将数据放在一个不可见的文本区域中,现在“mydata”textarea中的数据可以被JS访问,如下所示:
var myData = JSON.parse($('#mydata').val());
虽然这样可行,但在某种程度上我似乎没有正确的方法...我知道我可以通过在页面打开后使用Ajax获取数据来避免“弄脏”html代码,但是我的意思是我试图在这里做的是避免更多的请求,所以只有一个请求,一切都将是可访问的。实际上在我的应用程序中我有大约5个这样的textareas,所以只有1个服务器请求我得到所需的所有数据。
由于
答案 0 :(得分:2)
从PHP的角度来看,这没有区别:
<textarea id="mydata" style:"display:none">[{code:1,name:'John'},{code:2,name:'Mary'},{code:3,name:'Paul'}]</textarea>
和此:
var myData = [{code:1,name:'John'},{code:2,name:'Mary'},{code:3,name:'Paul'}];
以上两种都采用以下形式:
[a string][the serialized object][a string]
无论您是使用HTML还是使用JavaScript来围绕这些值,围绕装饰只是PHP的原始输出字符串。因此,不需要添加将JSON输出到表单元素的额外步骤,然后使用JavaScript将表单元素的值作为字符串获取并将其解析回对象。您可以直接将对象本身发送到JavaScript代码。