如何在Javascript中使用文件获取内容和json解码

如何在Javascript中使用文件获取内容和json解码,javascript,social-networking,social,Javascript,Social Networking,Social,我试图在Javascript中使用这个PHP API。如何在Javascript中使用文件获取内容和json解码 PHP API代码 $content=@file_get_contents("http://doma.in/api/?url=http://www.google.com&api=APIKEY"); $url=json_decode($content,TRUE);//Decodes json into an array if(!$url["error"]){ // If

我试图在Javascript中使用这个PHP API。如何在Javascript中使用文件获取内容和json解码

PHP API代码

$content=@file_get_contents("http://doma.in/api/?url=http://www.google.com&api=APIKEY");
$url=json_decode($content,TRUE);//Decodes json into an array 

if(!$url["error"]){  // If there is no error
 echo $url["short"]; //Outputs the short url 
}else{  
 echo $url["msg"]; //Outputs the error message 
}
Javascript

(function( $ ) {
  $(document).ready(function() { 
    var url = window.location.href;
    var host =  window.location.hostname;
    var title = $('title').text();
    title = escape(title);

    var twitter = 'http://twitter.com/home?status='+title+'%20'+url;
    var facebook = 'http://www.facebook.com/sharer.php?u='+url;

    var tbar = '<div id="sicons">';
    tbar += '<a href="'+twitter+'" id="twitter" title="Share on twitter">Twitter</a>';
    tbar += '<a href="'+facebook+'" id="facebook" title="Share on Facebook">Facebook</a>';
    tbar += '</div>';

  });
})(jQuery);
我已经将其添加到Javascript的顶部

$.getJSON('data.php', function(data) {
    if(!data.error){ // If there is no error
    alert(data.short) //Outputs the short url
    }else{
    alert(data.msg)
    }
});
Javascript现在看起来是这样的

(function( $ ) {
  $(document).ready(function() { 
    var shorturl = data.short;
    var title = $('title').text();
    title = escape(title);

    var twitter = 'http://twitter.com/home?status='+title+'%20'+url;
    var facebook = 'http://www.facebook.com/sharer.php?u='+url;

    var tbar = '<div id="sicons">';
    tbar += '<a href="'+twitter+'" id="twitter" title="Share on twitter">Twitter</a>';
    tbar += '<a href="'+facebook+'" id="facebook" title="Share on Facebook">Facebook</a>';
    tbar += '</div>';

  });
})(jQuery);
(函数($){
$(文档).ready(函数(){
var shorturl=data.short;
var title=$('title').text();
标题=逃跑(标题);
var推特http://twitter.com/home?status='+标题+'%20'+url;
风险值http://www.facebook.com/sharer.php?u=“+url;
var-tbar='';
tbar+='';
tbar+='';
tbar+='';
});
})(jQuery);

我肯定我做错了什么。抱歉,我是(C,C++)编码的初学者。

通过AJAX加载数据是异步的。您的第一个调用(
$.getJSON
)会在页面加载后立即执行,但作为参数传递的回调函数只会在底层HTTP请求完成后立即执行。这意味着您的程序不会阻止等待HTTP请求;调用
$.getJSON(…)
后,程序将运行,并在HTTP请求完成时调用回调方法

加载页面后,您将立即评估数据(在第二个函数中)。但是,由于数据是异步加载的,因此在呈现文档并执行函数时,数据尚未加载

您的问题的解决方案是将计算数据的代码移动到
$的回调函数中。getJSON(…)


javascript中没有
文件\u get\u contents()
。您可以使用ajax从同一个域下载页面,但最好将Javascript转换为PHP代码。谢谢你的回复。另外,你应该混合使用PHP+AJAX来让它工作。使用PHP在单独的文件中创建按钮HTML,使用AJAXExample下载按钮:。但老实说,谷歌让你可以访问JAVASCRIPT API,所以你根本不需要使用PHP…嘿,这个链接对你有用吗
(function( $ ) {
  $(document).ready(function() { 
    var shorturl = data.short;
    var title = $('title').text();
    title = escape(title);

    var twitter = 'http://twitter.com/home?status='+title+'%20'+url;
    var facebook = 'http://www.facebook.com/sharer.php?u='+url;

    var tbar = '<div id="sicons">';
    tbar += '<a href="'+twitter+'" id="twitter" title="Share on twitter">Twitter</a>';
    tbar += '<a href="'+facebook+'" id="facebook" title="Share on Facebook">Facebook</a>';
    tbar += '</div>';

  });
})(jQuery);
$.getJSON('data.php', function(data) {
    if (!data.error) {
        // Process your data here!
    } else {
        alert(data.msg)
    }
});