5

私は次の機能を持っています:

$.ajax({
    url: "../../getposts.php"
}).done(function(posts) { 
    var postsjson = $.parseJSON(posts);
});

postsjson関数の外で変数を使用するにはどうすればよいです.done()か、または変数をグローバルに宣言するにはどうすればよいですか?

ajaxが完了したときではなく、後で配列を使用したいので、別の関数に渡すことはできません。

4

3 に答える 3

5

ajax 呼び出しの外部で変数を定義するだけの場合:

var postsjson;

$.ajax({
    url: "../../getposts.php"
}).done(function(posts) { 
    postsjson = $.parseJSON(posts);
});

その後、屋外で使用できます。同様に、 を離れるvarとグローバルに宣言されますが、これはお勧めできません。

SLaks が指摘したように、AJAX 呼び出しから取得したデータをすぐに使用することはできません。done関数が実行されるのを待ってから、関数が有用なものに初期化されます。

于 2012-10-24T20:24:30.370 に答える
3

すばらしいことに、Ajax 関数から返される promise はさまざまな方法で使用できます。

var XHR = $.ajax({
    url: "../../getposts.php"
});


function somethingElse() {
    XHR.done(function(posts) { 
       var postsjson = $.parseJSON(posts);
    });
}

--

function myAjax(url) {
    return $.ajax({
        url: url
    });
}

function doSomething(url) {
    var postsjson = myAjax(url).done(parsePosts);
}

function parsePosts() {
     return $.parseJSON(posts);
}

doSomething("../../getposts.php");

等...

于 2012-10-24T20:38:34.813 に答える
1

ajax を呼び出す前に、変数を宣言する必要があります。

簡単なサンプル:

var postsjson;

$.ajax({
    url: "../../getposts.php"
}).done(function(posts) { 
    postsjson = $.parseJSON(posts);
});

console.info(postsjson); // Use here for example
于 2012-10-24T20:26:55.227 に答える