7

Tôi đã cố gắng tìm nạp dữ liệu bằng cách sử dụng api facebook vào đầu vào biểu mẫu. Bây giờ, mọi thứ diễn ra tốt đẹp cho đến khi tôi cố tìm nạp vị trí của người dùng hiện tại.Loại không bắt buộcLỗi: Không thể đọc tên thuộc tính 'không xác định

Nếu người dùng hiện tại đã chia sẻ vị trí của anh ấy (Nơi anh ấy đang sống), thì tôi sẽ không gặp vấn đề gì. Tuy nhiên, nếu người dùng không chia sẻ vị trí của anh ấy trên facebook, tôi gặp lỗi: Uncaught TypeError: Cannot read property 'name' of undefined

Đây là mã tôi đang sử dụng. Nếu bạn có bất kỳ ý tưởng làm thế nào để giải quyết nó, hãy bình luận ở đây :)

<div id="fb-root"></div> 
<script> 
    // Additional JS functions here 
    window.fbAsyncInit = function() { 
    FB.init({ 
     appId  : '*******', // App ID 
     status  : true, // check login status 
     cookie  : true, // enable cookies to allow the server to access the session 
     xfbml  : true // parse XFBML 
    }); 

    FB.getLoginStatus(function(response) { 
    if (response.status === 'connected') { 

    FB.api('/me', function(response) { 
    document.getElementById("user_login").value="FB - " + response.username; 
    document.getElementById("user_email").value=response.email; 
    document.getElementById("first_name").value=response.first_name; 
    document.getElementById("last_name").value=response.last_name; 
    document.getElementById("user_url").value=response.link; 
    document.getElementById("fbid").value=response.id; 
    if(response.location !== 'undefined') 
    { 
    document.getElementById("location").value=response.location.name; 
    alert(response.location.name); 
    } 
    document.getElementById("registerform").submit(); 

}); 

    } else if (response.status === 'not_authorized') { 
    alert('error'); 
    } else { 
    alert('Please Log In!'); 
    } 
}); 

    }; 

    // Load the SDK Asynchronously 
    (function(d){ 
    var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0]; 
    if (d.getElementById(id)) {return;} 
    js = d.createElement('script'); js.id = id; js.async = true; 
    js.src = "//connect.facebook.net/en_US/all.js"; 
    ref.parentNode.insertBefore(js, ref); 
    }(document)); 
</script> 

Trả lời

16

On line này:

if(response.location !== 'undefined') 

... bạn đang kiểm tra nếu response.location không phải là chuỗi"undefined". Vì undefined không phải là chuỗi "undefined", điều kiện là đúng. Sau đó, bạn cố gắng sử dụng response.location.name và dưới dạng response.locationundefined, bạn sẽ gặp lỗi.

Bạn có thể có nghĩa là một trong hai:

if(response.location) 

hoặc

if(typeof response.location !== 'undefined') 
+0

Cảm ơn! Sai lầm của tôi ... –

+0

@ IdoDoron: Đừng lo lắng, vui vì điều đó đã giúp! Lỗi dễ mắc phải. –

Các vấn đề liên quan