Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery JSONP不使用gravatar_Jquery_Gravatar - Fatal编程技术网

Jquery JSONP不使用gravatar

Jquery JSONP不使用gravatar,jquery,gravatar,Jquery,Gravatar,在我的应用程序中,我试图在注册期间从gravatar获取用户的个人资料,这样他就不必输入他的名字。我正在使用下面的代码- $.ajax({ url: "http://www.gravatar.com/" + get_gravatar_url(email) + ".json", async: false, type: 'GET', dataType:

在我的应用程序中,我试图在注册期间从gravatar获取用户的个人资料,这样他就不必输入他的名字。我正在使用下面的代码-

    $.ajax({
                url: "http://www.gravatar.com/" + get_gravatar_url(email) + ".json",
                async: false,       
                type: 'GET',
                dataType: 'jsonp',
                crossDomain: true,
                success: function(data){
                    console.log('data = ' + gravatar_profile);
                    data_received = 1;
                },
                error: function() {
                    console.log('oh noes!');
                },
        });
当找不到用户的电子邮件时,我在控制台中收到此错误-

GET http://en.gravatar.com/79ac7efbf9deb9b7f7965d9aa564078b.json?callback=jQuery191009235964552499354_1373008918711 404 (Not Found)
但是,不会调用error函数。(有人能解释一下原因吗?) 但是,如果找到用户的电子邮件,则会调用success函数

我还尝试了以下功能-

$.jsonp({
            async: false,
            url: "http://www.gravatar.com/" + get_gravatar_url(email) + ".json",
            dataType: "jsonp",
            crossDomain: true,
            timeout: 5000,
            success: function(data){
                alert(data);
            },
            error: function(XHR, textStatus, errorThrown){
                alert("ERREUR: " + textStatus);
                //alert("ERREUR: " + errorThrown);
            },
        });
虽然404错误仍然显示在控制台中,但至少它检测到并显示警报。但是,由于gravatar以json格式发送数据,我得到了一个新的错误-

Uncaught SyntaxError: Unexpected token :

有人能告诉我怎么做吗?

为了供大家参考,我在这里发布了一个简单的JSONP示例程序

 OTPrequest = function(){
    customerObj = {'data':'abc'}
    $.ajax({
      type:'GET',
      dataType: 'jsonp',
      data: customerObj,
      jsonpCallback: 'loadit',
      url: 'http://abc/retrieve',
      success: function (responseData) { //Your server responseData should be like this "loadit('otp sent')"
        loadit(responseData)
      },
      error: function(xhr, textStatus, errorThrown){
        //Error handler.
      }
    });
    function loadit(data){
      console.log(data);
      alert(data); //This will alert the popup as "opt sent".
    }
  }

@ParinPorecha:1)如果没有JSONP,跨域请求是不可能的。2) 您现在在使用此代码时面临什么错误/问题?也请参考这个,它不起作用了。有没有办法在不使用数据类型“jsonp”的情况下跨域请求json?我得到的错误与以前相同-
GEThttp://en.gravatar.com/79ac7efbf9deb9b7f7965d9aa564078b.json?callback=jQuery191009235964552499354_1373008918711 404(未找到)
Plus,
async:false
似乎也不起作用(由于错误,而不是由于您的代码)url很好。通过浏览器打开它效果很好。在此
success:function(data){alert(data);}
这里
data
的值是什么?数据是gravatar返回的用户配置文件。它是一个json对象。您可以在此处查看()你也可以用这个