范围问题(javascript)

时间:2013-09-22 02:10:41

标签: javascript ajax

我使用Mysql使用PHPAjax/JSON运行javascript变量。我的原始问题可以在这里找到:from mysql to javascript variable。基本上我现在遇到的问题是在脚本的其余部分中识别变量。在我的上一个问题中,您会看到两个变量来自:

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函数冲突的好文章的任何建议甚至链接(如果这是问题)将是一个很大的帮助。

编辑(完整代码):

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();
   }
);

1 个答案:

答案 0 :(得分: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();
   }
);