0

これは簡単な作業かもしれませんが、jQuery、JSON、および Javascript の関係を学習しているだけです。jQuery を使用してデータベースからプルし、res[i].showlink という URL という変数を作成しました。これが呼び出し用のコードの一部です。

   $.get("http://databasecall=json", {}, function (res) {
       $.mobile.hidePageLoadingMsg();
       if (res.length) {
           var s = "";
           for (var i = 0; i < res.length; i++) {
               s += "<li><a name=" + res[i].id + " href='" + "javascript:openGoogle()" + "'>" + res[i].showlink + "</a></li>";
           }
           $("#showList").html(s);
           $("#showList").listview("refresh")
       }, "json");

問題は、上記のコードの外側の javascript 関数 (openGoogle) で res[i].showlink データベース変数を再利用したいということです。データベース変数 res[i].showlink を再利用しようとすると、データベースからのデータが含まれなくなります。上記の jQuery/JSON コードの外で変数を再利用するにはどうすればよいですか? どんな提案でも本当に感謝しています。ありがとうございました!

4

4 に答える 4

2

res呼び出しの外部への参照を保存する必要がありますget。そうしないと、スコープが設定され、お気づきのように、呼び出しの外部からアクセスできなくなります。次のようなことを試してください:

var globalRes = null;

$.get("http://databasecall=json", {}, function(res) {
    globalRes = res;
    $.mobile.hidePageLoadingMsg();
    if (res.length) {
        var s = "";
        for (var i = 0; i < res.length; i++) {

            s += "<li><a name=" + res[i].id + " href='" + "javascript:openGoogle()" + "'>" + res[i].showlink + "</a></li>";

        }
        $("#showList").html(s);
        $("#showList").listview("refresh")
    }, "json");​

呼び出しの後、globalResには の値が含まれますが、グローバルになります。つまり、呼び出しresの外からアクセスできます。get

于 2012-07-09T20:50:25.330 に答える
2

その値をアンカータグのコンテンツとして保存しているので、そこからもアクセスできます。

変化する

javascript:openGoogle()

javascript:openGoogle.apply(this)

の内部ではopenGoogle、値にアクセスできます$(this).text()

編集
別のオプションは、値をパラメーターとして直接渡すことです。

変化する

javascript:openGoogle()

javascript:openGoogle(" + res[i].showlink + )

その後、変更します

function openGoogle() {

function openGoogle(showlink) {

で値にアクセスします

alert(showlink);
于 2012-07-09T20:51:06.063 に答える
0

グローバル変数に値を保存します。

$.get("http://databasecall=json", {}, function (res) {
    window.myResult = res;
    ....
}

そして後でそれを使用する

于 2012-07-09T20:50:23.360 に答える
0

ajax return 呼び出しの外側のスコープを持つ変数に格納する必要があります。

たとえば、次のようにすることができます。

           var resData;

含まれているjavascriptファイルの先頭に

次に、コードを次のように置き換えます

$.get("http://databasecall=json",        {}, function(res) {
                                   $.mobile.hidePageLoadingMsg();
                                   if(res.length){
                                   resData = res;
                                   var s = "";
                                   for(var i=0; i<res.length; i++) {

                                   s+= "<li><a name=" + res[i].id + " href='" +      "javascript:openGoogle()" + "'>"  + res[i].showlink +  "</a></li>"; 

                                   }
于 2012-07-09T20:52:40.457 に答える