2013-07-17 6 views
5

मैं एक बटन है कंसोल (बस का परीक्षण करने के इस हिस्से में काम करता है):बटन कॉलबैक फ़ंक्शन हर पृष्ठ लोड चल

<script type="text/javascript"> 
var helper = (function() { 
    return { 
     onSignInCallback: function(data) { 

      var dataString = 'access_token=' + data['access_token']; 

      $.ajax({ 
       type: "POST", 
       url: "getdetails", 
       data: dataString, 
       dataType: 'html', 
       timeout: 0, 
       statusCode: { 
        200: function(data){ 
         console.log(data); 
        }, 
        error: function(data){ 
         console.log("There was an error"); 
        } 
       } 
      }); 
     } 
    }; 
})(); 

function onSignInCallback(data) { 
    helper.onSignInCallback(data); 
} 
</script> 

हालांकि, मुद्दा यह है कि हर बार जब मैं बटन पर क्लिक बिना पृष्ठ को रीफ्रेश, मेरे समारोह रन और डेटा AJAX के माध्यम से पोस्ट किया जाता है और पाठ हो जाता है कंसोल में मुद्रित।

कोई विचार यह क्यों हो रहा है? मुझे यह चाहिए (जाहिर है) तो यह तब होता है जब वे बटन पर क्लिक करते हैं।

मैंने Google Plus एपीआई के साथ काम कर रहा हूँ, कोड से संशोधित:

https://github.com/googleplus/gplus-quickstart-javascript/blob/master/index.html#L44

+0

अजीब। यह कभी-कभी क्रोम में भी मेरे लिए होता है। – turnt

उत्तर

5

प्रलेखन प्रति कि निर्देश के लिए:

डेटा-कॉलबैक - ग्लोबल नेम स्पेस में एक समारोह , जिसे साइन-इन बटन प्रदान किया जाता है और साइन-इन प्रवाह पूर्ण होने के बाद भी कहा जाता है। जब बटन प्रदान की गई है कॉलबैक किया जाए या नहीं उपयोगकर्ता पहले से एप्लिकेशन अधिकृत है और अपने आप प्रवेश किया जाना चाहिए की जाँच करने से होता है।

डिजाइन द्वारा कॉलबैक जब बटन प्रदान की गई है (यानी पृष्ठ लोड) चलाने के लिए और भी होगा जब बटन क्लिक किया जाता है।

पहला रन पर वैश्विक बूलियन सेट करने के लिए एक कामकाज होगा।

<script type="text/javascript"> 
var first_run = true; 
var helper = (function() { 
    return { 
     onSignInCallback: function(data) { 

      var dataString = 'access_token=' + data['access_token']; 

      $.ajax({ 
       type: "POST", 
       url: "getdetails", 
       data: dataString, 
       dataType: 'html', 
       timeout: 0, 
       statusCode: { 
        200: function(data){ 
         console.log(data); 
        }, 
        error: function(data){ 
         console.log("There was an error"); 
        } 
       } 
      }); 
     } 
    }; 
})(); 

function onSignInCallback(data) { 
    if(!first_run) { 
     helper.onSignInCallback(data); 
    } 
    first_run = false; 
} 
</script> 
+0

मीठे कि काम करता है। या नहीं, यह गूगल प्लस एपीआई के साथ काम करने या नहीं मैं नहीं जानता कि का सही तरीका है। लेकिन हाँ यह अब काम कर रहा है :) धन्यवाद। – Alias

2

the Google Plus documentation में:

उपयोगकर्ता पहले इस बटन के माध्यम से अपने आवेदन का उपयोग कर सकते हैं या किसी अन्य बटन एक ही आवेदन का प्रतिनिधित्व करने के लिए अनुमति देने पर सहमति व्यक्त की, तो उन्हें अपने में लॉग इन किया कॉलबैक फ़ंक्शन स्वचालित रूप से कहा जाता है। जैसे ही साइन-इन बटन प्रदान किया जाता है और पहुंच टोकन के साथ एक नई प्राधिकरण वस्तु को पास कर दिया जाता है।

0

मुझे यह भी मिल रहा था। मेरे वैश्विक onSignInCallBack (authResult) समारोह पर, मैं कॉल है कि एक अगर बयान है कि [ 'ACCESS_TOKEN'] authResult में एक मूल्य के लिए जाँच करता है में ajax अनुरोध करता है संलग्न। मैं AngularJs का उपयोग कर रहा हूं और अपने अजाक्स कॉल को मेरे नियंत्रक में ले जाया गया। चूंकि आप AngularJS का उपयोग नहीं कर रहे हैं, इसलिए आप अपने AJAX कॉल के साथ gplusController() .SignInCallback (..) लाइन को प्रतिस्थापित कर सकते हैं।

function onSignInCallback(authResult){ 
    if (authResult['access_token']) { 
    var afToken = document.getElementById('afToken').getAttribute('data-afToken'); 
    gplusController().onSignInCallback(authResult, afToken); 
    } 
} 
संबंधित मुद्दे