你如何使用在JavaScript/html中从外部php文件中提取的JSON数据?

问题描述:

我能够拉动JSON数据并将其作为我头脑中的脚本放入我的HTML文件中。我如何获得这些数据? (把它转化为可用的变量)(填充与MySQL数据)你如何使用在JavaScript/html中从外部php文件中提取的JSON数据?

外部json.php文件:

var elm = document.createElement("script"); 
elm.setAttribute("type", "text/javascript"); 
elm.src = "http://totallyExternalURL.php"; 
elm.id="jsonTest"; 
console.log(elm); 
document.getElementsByTagName('head')[0].appendChild(elm); 

整:

names: 
[ 
    {"firstName":"Kevin","lastName":"Guo"}, 
    {"firstName":"Jun Sung","lastName":"Wong"}, 
    {"firstName":"Anton","lastName":"Ansalmar"}, 
    {"firstName":"Linda","lastName":"Wong"}, 
    {"firstName":"George","lastName":"Costanza"} 
] 

我,在外部JSON数据拉JavaScript代码json数据被放在我的头上作为脚本,我怎么能拉所有的名字/姓氏显示?

+0

你有没有听说过CORS的?这是做跨域请求的真正方法... – tjameson

你在做什么实际上被称为jsonp。通常情况下,你要做的就是让脚本返回一个脚本,用你的数据调用页面上的一个函数。您可能会发现使用或者如果在您自己的服务器上调用脚本时使用常规`json'更容易使用jQuery。

function callback(data) { 
    ... do something with the returned data 
} 

var elm = document.createElement("script"); 
elm.setAttribute("type", "text/javascript"); 
elm.src = "http://totallyExternalURL.php?callback=callback"; 
elm.id="jsonTest"; 
console.log(elm); 
document.getElementsByTagName('head')[0].appendChild(elm); 

然后让你的外部脚本返回(注意,你的脚本应该会回调参数的值,并用其作为函数的名称来调用)。函数的名称和回调参数的值需要相同。

callback({ "names" : 
    [ 
     {"firstName":"Kevin","lastName":"Guo"}, 
     {"firstName":"Jun Sung","lastName":"Wong"}, 
     {"firstName":"Anton","lastName":"Ansalmar"}, 
     {"firstName":"Linda","lastName":"Wong"}, 
     {"firstName":"George","lastName":"Costanza"} 
    ] }); 

或者用jQuery

$.getJSON('http://totallyExternalURL.php?callback=?', function(data) { 
     ... do something with the data ... 
}); 
+0

非常感谢!你放的javascript方法工作得很好!jquery方法根本不起作用(我通过google api使用jquery v1.6.4)它只是说“回调是未定义“ 我的javascript: '''的javascript 回调函数(数据){ 的console.log(数据); 的console.log(data.names [0] .firstName); } 变种榆树= document.createElement(“script”); elm.setAttribute(“type”,“text/javascript”); elm.src = “?HTTP://externalURL.php回调=回调”; elm.id =“jsonTest”; console.log(elm); document.getElementsByTagName('head')[0] .appendChild(elm); ''' 我的jsonp和你的完全一样。 – junsungwong

+0

哦,我有jQuery的工作!非常感谢!我只是没有在原始语句中使用jquery的回调函数,因为它不起作用。单独的函数回调(数据)被称为很好。 ''javascript function callback(data){ console.log(data); console.log(data.names [0]。名字); } $ .getJSON('http://externalURL.php?callback =?'); ''' – junsungwong

将js返回为函数,该函数返回数组的JavaScript对象,然后您可以调用该函数并将返回值分配给变量。

因此,在一个函数调用中包装JSON。

查找jsonp。

+0

什么?!我不明白:( – junsungwong

+0

http://bob.pythonmac.org/archives/2005/12/05/remote-json-jsonp/检查了这一点,并http://niryariv.wordpress.com/2009/05/ 05/jsonp-quickly/ – smoothe