Javascript 解释如何使用Jquery从twitter搜索API提取数据并在HTML上打印

Javascript 解释如何使用Jquery从twitter搜索API提取数据并在HTML上打印,javascript,jquery,json,twitter,Javascript,Jquery,Json,Twitter,我对javascript和jquery还很陌生。我正在制作一个需要twitter数据的web应用程序。这里有两个代码。第一个是来自朋友,另一个是我的版本。现在我的版本不起作用了。以下是我的几个问题: 1) 在版本1中,为什么要将e传递给函数? 2) 为什么我们在数据类型中使用“jsonp”? 3) 是什么使我的代码无法工作 及 什么使代码版本1工作 工作版本 $('#input').submit(function(e){ e.preventDefault(); e.stopPro

我对javascript和jquery还很陌生。我正在制作一个需要twitter数据的web应用程序。这里有两个代码。第一个是来自朋友,另一个是我的版本。现在我的版本不起作用了。以下是我的几个问题:

1) 在版本1中,为什么要将e传递给函数? 2) 为什么我们在数据类型中使用“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>");
          }
        });
$(“#输入”).submit(函数(e){
e、 预防默认值();
e、 停止传播();
var hashtag=$(this).find('input[name=“hashtag”]').val();
var twitterapi=”http://search.twitter.com/search.json?";
jQuery.ajax({
键入:“获取”,
url:twitterapi,
数据:{
“q”:标签,
“rpp”:1000
},
数据类型:“jsonp”
}).完成(功能(响应){
var结果=响应结果;
对于(var i=0;i)+
"" +
结果[i]。来自用户+
"  " +
结果[i].text+“

”; } });
我的版本

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>");
                 }
            });
});
var hashtag=$(this).find('input[name=“hashtag”]').val();
var twitterapi=”http://search.twitter.com/search.json?";
var tweetspresent=results.length;
jQuery.ajax(
{
键入:“获取”,
url:twitterapi,
数据:{“q”:hashtag,“rpp”:1000},
数据类型:“jsonp”,
});
}).完成(功能(结果)
{
对于(i=0;i1)而言,“e”代表事件,在本例中,是传递到函数中的submit event对象。您可以找到有关事件的更多信息。这是对preventDefault方法的详细解释

2) 当您使用ajax调用从不同的域获取数据时(例如,your-website.com执行从twitter.com获取数据的javascript),我们称之为“跨域”请求。出于安全原因,这是不允许的。有几种方法可以解决此问题。其中之一是。对于具有本机支持的较新浏览器,您不再需要使用jsonp类型

3) 你不会说什么不起作用,所以首先(在现代浏览器中)使用console.log(变量)进行一点调试,检查你的done回调是否被调用,如果被调用,则记录响应以查看结构(或者最好检查twitterapi)

编辑
您不必将任何内容传递到
done
函数中,这仅取决于您的需要。当您执行jQuery.ajax函数时,它将执行您要求它执行的任何操作,当它完成时,它将返回一个或多个对象您可以进一步使用。在您的情况下,您需要一种访问从Twitter返回的数据的方法。我强烈建议您多阅读jQuery。

我可以这样继续说:请先学习DOM和JavaScript(按此顺序)这是一个不理解基础知识的问题,搜索一下,你会找到所有答案。请解释一下,在代码1中,为什么我们要在.done()之后将“result”传递给函数?