1

私はJSONとjQueryにかなり慣れていないので、これが可能かどうかはわかりません。これらは私の2つのスクリプトです:

$.getJSON('http://shop.com/test/?format=json', function(data){
  $.each(data.textpage, function(index, text){
    $('<div></div>').html('' + text + '').appendTo('.verzendkosten');
  });
});

$.getJSON('http://shop.com/vraag/?format=json', function(data){
  $.each(data.textpage, function(index, text){
    $('<div></div>').html('' + text + '').appendTo('.eigenschappen');
  });
});

これら2つを組み合わせることは可能ですか?どちらのスクリプトも機能しますが、これらをどのように組み合わせることができるか、またはそれらを組み合わせることができるかどうかに興味があります。

4

4 に答える 4

1

組み合わせて何を意味するのかわからない。両方のスニペットの重複したコードを削除したいと思います。

これを一般的な再利用可能な関数にラップし、ページ名とクラス名をパラメーターとして渡します

function DoSomethingGreat(page,targetClass)
{
   $.getJSON('http://shop.com/'+page+'/?format=json', function(data){
     $.each(data.textpage, function(index, text){
       $('<div></div>').html('' + text + '').appendTo(targetClass);
     });
   });
}

そしてそれを次のように呼びます

DoSomethingGreat('test','.verzendkosten')

DoSomethingGreat('vraag','.eigenschappen')

該当する場合はいつでも

編集:コメントによると、

一部のページが読み込まれたときにこれらを実行する場合は、jQuerydomready関数を使用します。

呼びたいページに入れて

$(function(){
   DoSomethingGreat('vraag','.eigenschappen')
});
于 2012-05-28T02:23:50.340 に答える
0

http://api.jquery.com/jQuery.when/をご覧ください

あなたはこれを達成するために彼らの例を使うことができるでしょう、次のようなものです:

$.when(
    $.getJSON('http://shop.com/test/?format=json'),
    $.getJSON('http://shop.com/vraag/?format=json')
).then(function () {
    // Do stuff with data
});

.then()で定義された関数は、両方のgetJSON呼び出しが完了すると実行されます。

これは、両方から返されたデータを「結合」したいことを前提としています

于 2012-05-28T02:23:08.530 に答える
0

サーバーが両方の応答を1つに結合できる場合は、はい。Deferredそれ以外の場合は、jQueryの機能を使用する必要があります。

応答は次のようになります。

{"data": {
    "kosten": "whatever you would have returned from /test/",
    "eigenschappen": "whatever you would have returned from /vraag/"
}}

次に、JavaScriptはそれらにアクセスできます。

$.each(data.kosten.textpage, ...)

$.each(data.eigenschappen.textpage, ...)
于 2012-05-28T02:23:21.073 に答える
0

さて、スクリプトの組み合わせは、さまざまな方法で行うことができます。最も簡単な解決策は、リクエストURLの可変部分をスクリプト内で実際に可変にすることです。

ただし、結果として何を探しているかによって異なります。

于 2012-05-28T02:23:57.907 に答える