2013-09-22 3 views
0

Я использую переменные javascript из Mysql с использованием PHP с Ajax/JSON. Мой оригинальный вопрос можно найти здесь: from mysql to javascript variable. В основном у меня сейчас проблема с переменными, которые распознаются в течение оставшейся части скрипта. На мой последний вопрос, который вы видите две переменные выходят из:Проблема с областью (javascript)

var tag_name = 'example'; 
var client_id = '123456789'; 

В настоящее время с помощью (Спасибо @Richard Rodriguez):

$.ajax({ 
    url: 'call.php', 
    dataType: 'json' 
}).done(
    function(data){ 
    var tag_name = data[0]; 
    var client_id = data[1]; 
    } 
); 

Я считаю, что этот вопрос может быть просто javascript function conflict? Вот ссылка на скрипт, который я пытаюсь изменить из github: https://raw.github.com/ryancw/instagram-scroll/master/instagram-scroll.js. Надеюсь, что исходный файл поможет диагностировать причину проблемы? Я исследовал это за последние 2 часа без везения. Любые предложения или даже ссылки на хорошие статьи о конфликтах функций javascript (если это проблема) будут большой помощью.

EDIT (Полный код):

var tag_name = null; 
var client_id = null; 
var thumb_dimension = null; 
var div_to_add_pics = null; 
var include_caption = null; 
var include_username = null; 
var url = null; 

function processData() { 
    console.log(tag_name); 
    console.log(thumb_dimension); 
    console.log(div_to_add_pics); 
    console.log(include_caption); 
    console.log(include_username); 
    console.log(url); 
} 

$.ajax({ 
    url: 'call.php', 
    dataType: 'json' 
}).done(
    function(data){ 
    tag_name = data[0]; 
    client_id = data[1]; 
    thumb_dimension = 220; 
    div_to_add_pics = '#img'; 
    include_caption = false; 
    include_username = false; 
    url = 'https://api.instagram.com/v1/tags/'+tag_name+'/media/recent?client_id='+client_id; 
    processData(); 
    } 
); 

ответ

0

Ваша проблема не сфера функционирования конфликта. То, как объявляются переменные, они видны только в локальной области, вам либо нужно их использовать, либо передать их другой функции, которая может их использовать, либо (при загрязнении глобальной области) объявить их глобально и удалить ключевые слова var в .done обратного вызова

их с помощью локально

$.ajax({ 
    url: 'call.php', 
    dataType: 'json' 
}).done(
    function(data){ 
    var tag_name = data[0]; 
    var client_id = data[1]; 

    var clienttag = client_id+tag_name; 
    //blah blah blah 
    } 
); 

передавая их в другую функцию

function processData(tag_name,client_id) { 
    console.log(tag_name); 
    console.log(client_id); 
} 

$.ajax({ 
    url: 'call.php', 
    dataType: 'json' 
}).done(
    function(data){ 
    var tag_name = data[0]; 
    var client_id = data[1]; 
    processData(tag_name,client_id); 
    } 
); 

объявить глобально (который является наименее оптимальным, так как он загрязняет глобальное пространство)

var tag_name = null; 
var client_id = null; 

function processData() { 
    console.log(tag_name); 
    console.log(client_id); 
} 

$.ajax({ 
    url: 'call.php', 
    dataType: 'json' 
}).done(
    function(data){ 
    tag_name = data[0]; 
    client_id = data[1]; 
    processData(); 
    } 
); 
+0

справедливое предупреждение, что если вы делаете вариант 3 (глобальный), люди не хотят быть вашим другом больше. просто скажите ... –

+0

@Patrick Большое спасибо, эта информация помогла мне лучше понять проблему. Учитывая, что я пытаюсь заставить его работать со сценарием в github (который связан), я бы хотел объявить их глобально, поскольку переменные используются во всем скрипте, в других переменных, в «ProcessData (response)» и других функциях , Пробовал использовать все три метода без везения. – SethCodes

+0

, если они вам нужны глобальные, тогда будет работать третий вариант, если вы этого не сделали, то вы его не скопировали правильно. 2 переменные должны быть объявлены в глобальном пространстве (вне любой функции) –

Смежные вопросы