0

私はjavascriptとjqueryにかなり慣れていません。Twitter からのデータを必要とする Web アプリを作成しています。ここに私が持っている2つのコードがあります。1 枚目は友人からのもので、もう 1 枚は私のバージョンです。現在、私のバージョンは機能していません。だからここに私のいくつかの質問があります:

1) バージョン 1 では、なぜ関数に e を渡すのですか? 2) dataType で「jsonp」を使用するのはなぜですか? 3) コードが機能しない原因は何ですか?

コード バージョン 1 が機能する理由は何ですか?

作業バージョン

$('#input').submit(function(e){
    e.preventDefault();
    e.stopPropagation();
       var hashtag = $(this).find('input[name="hashtag"]').val();
        var twitterapi = "http://search.twitter.com/search.json?";
        jQuery.ajax({
          type: "GET",
          url: twitterapi,
          data: {
            "q": hashtag,
            "rpp": 1000
          },
          dataType: 'jsonp'
        }).done(function (response) {
          var results = response.results;
          for (var i = 0; i < results.length; i++) {
            $("#tweet").append("<p class='tweet'>" +
              "<span class='username'>" +
              results[i].from_user +
              "</span> <span class='tweet_content'> " +
              results[i].text + "</span></p>");
          }
        });

私のバージョン

var hashtag = $(this).find('input[name="hashtag"]').val();
        var twitterapi = "http://search.twitter.com/search.json?";
        var tweetspresent = results.length;
         jQuery.ajax(
         {
              type: "GET",
              url: twitterapi ,
              data: {"q": hashtag,"rpp":1000},
              dataType: 'jsonp',
            });
        }).done(function(results)
            {
               for(i=0;i<tweetspresent;i++)
                 {
                   $("#tweet").html("<p> Name: " + results[i].from_user + " - " + results[i].text + "</p>");
                 }
            });
});
4

1 に答える 1

0

1) "e" はeventを表し、この場合、関数に渡されるのは送信イベント オブジェクトです。イベントの詳細については、こちらをご覧ください。これは、たとえば preventDefault メソッドが行うことの詳細な説明です

2) 別のドメインから ajax 呼び出しを使用してデータを取得する場合 (たとえば、your-website.com が twitter.com からデータを取得する JavaScript を実行する場合)、「クロスドメイン」リクエストについて説明します。セキュリティ上の理由から、これは許可されていません。この問題を回避する方法はいくつかあります。それらの1つはjsonpです。CORSをネイティブにサポートする新しいブラウザーでは、jsonp タイプを使用する必要がなくなりました。

3) 何が機能していないかは言わないので、最初に (最新のブラウザーで) console.log(変数) を使用して少しデバッグを行い、完了したコールバックが呼び出されるかどうかを確認します。構造(またはTwitter APIを確認してください)。

編集関数 に何も渡す必要はありませんdone-それはあなたのニーズにのみ依存します。jQuery.ajax 関数を実行すると、実行するように指示されたことが実行され、終了すると、さらに使用できるオブジェクトが返されます。あなたの場合、Twitter から返されたデータにアクセスする方法が必要です。jQuery ajaxについてもっと読むことを強くお勧めします。

于 2012-12-27T16:32:14.690 に答える