2011-05-27 13 views
0

OK私は別の場所に新しいajaxリクエストを作成する必要があるURLを決定するサーバーに対してajaxリクエストを作成するものを作成しています。 SO =のすべての助けを借りて、すべてが進歩しています。しかし、私は再び立ち往生しています。私は必要なときに変数をさまざまな関数に戻すことに苦労しています。だから私はない私が取得する方法1 ..私の問題は、2つの区分けであると思います...ajaxコールバック内の関数間で変数を渡すヘルプ

var img = "null"; 
var z = "null"; 

$(document).ready(function() 
{ 
    $.ajax({ 
    type: "GET", 
    url: "connect.php", 
    dataType: "xml", 
    success: function parseXml(data) 
     { 
      $(data).find("ITEM").each(function() 
      { 
      query = $("SKU", this).text(); 
      query = 'http://domain.com/' + query + '?req=exists,json'; 
      img = $("SKU", this).text(); 
      img = '<img src="http://domain.com/' + img + '">'; 
      var date =$("LAST_SCAN" , this).text(); 
       $.ajax({ 
        url: query, 
        dataType: 'jsonp'  
        }); 
       $("table").append('<tr>'+'<td>' + (date) + '</td>' + '<td>' + (z) + '</td>'); 
      }); 
     } 
    }); 
}); 

// function required to interpret jsonp 

function jsonResponse(response){ 
    var x = response["it.exists"]; 
    // console.log(x); 
    if (x == 0) { 
    console.log("NO"); 
    var z = "NO IMG"; 
    } 
    if (x == 1) { 
    console.log(img); 
    //this only returns the first image path from the loop of the parseXml function over and over 
    var z = (img); 
    } 
    return z; 
} 

jsonResponse(
{"it.exists":"1"},""); 

と私のコード:秒(JSONP)要求は次のようになりますJSON関数を返します。そのif文にループするimg変数と、一度動作したら、そのz変数を最初のxmlパーサで使用するためにはどうすれば返すことができますか?

+0

あなたのコードが悪いインデントされ、いくつかの閉じ括弧( ''})が欠落している、と余分なセミコロンを持っている( ';'): – gilly3

+0

私はそれを掃除しましたのでうまくいけば分かりにくいです... – Zac

+0

"jsonResponse"という名前のJSONPコールバックが必要ですか?または、あなたの要求にコールバック名を指定できますか?通常、JSONPリクエストでコールバック名を指定しますが、ここではそれを行うことはありません。 – gilly3

答えて

1

は、この同期アプローチを試してみてください。これにより、コードや実行しようとしていることを理解することが非常に困難になります。
+0

華麗!ありがとう=)! – Zac

0

グローバル変数に 'date'を格納し、ロジックを移動してHTML要素をjsonResponse関数に追加します。 jsonResponseからの制御フローは非同期に呼ばれるので返すことはできませんが、その関数から何かを続けてもかまいません。 、

var itemQueue = []; 

$(document).ready(function() 
{ 
    $.ajax({ 
     type: "GET", 
     url: "connect.php", 
     dataType: "xml", 
     success: function parseXml(data) 
     { 
      itemQueue= $(data).find("ITEM").map(function() 
      { 
       return { 
        sku: $("SKU", this).text(), 
        date: $("LAST_SCAN", this).text() 
       }; 
      }).get(); 
      getNextItem(); 
     } 
    }); 
}); 

function getNextItem() 
{ 
    var item = itemQueue[0]; 
    var query = "http://domain.com/" + item.sku + "?req=exists,json"; 
    $.ajax({ 
     url: query, 
     dataType: 'jsonp' 
    }); 
} 

function jsonResponse(response) 
{ 
    var item = itemQueue.shift(); 
    if (itemQueue.length) 
    { 
     getNextItem(); 
    } 
    var x = response["it.exists"]; 
    var z = x == "0" ? "NO IMG" : "<img src=\"http://domain.com/" + item.sku + "\">"; 
    $("table").append("<tr><td>" + item.date + "</td><td>" + z + "</td>"); 
} 
関連する問題