0

withをMysql使用して JavaScript 変数を実行しています。私の元の質問はここにあります: from mysql to javascript variable。基本的に、スクリプトの残りの部分で変数が認識されるという問題が発生しています。私の最後の質問では、2 つの変数が次のようになっていることがわかります。PHPAjax/JSON

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 に答える