0

我正在Mysql使用PHPwith运行 javascript 变量Ajax/JSON。我原来的问题可以在这里找到: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();
   }
);
4

1 回答 1

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();
   }
);
于 2013-09-22T02:25:37.883 回答