0

我已经有一段时间了,我已经尝试了一切(并且由于stackoverflow而学到了很多新东西)。我一直遇到的问题是我似乎无法从我的 citations.js 保存的点击处理程序中获取值,以便我可以在 main.js 中使用它?我尝试过使用带有 set 和 get 的函数,在 click 处理程序中返回 ajax 调用以及其他一些东西,因此非常感谢任何帮助,

我有三个 .js 文件 request.js、citations.js 和 main.js

这是代码,

request.js,

function citeAjax(citationId) {
return $.ajax({
              type: 'GET',
              url: 'https://www.sciencebase.gov/catalog/itemLink/' + citationId +    
'?format=jsonp',
              jsonpCallback: 'getSBJSON',
              contentType: "application/json",
              dataType: 'jsonp'             
         });
}

var promise = citeAjax(citationId);

citations.js,

promise.done(function (json) {
                 var linkBase = "http://www.sciencebase.gov/catalog/item/";
                 var link = "";                     
                 var itemId = "";                    
                 var urlId = "";

                 $.each(json.items, function(i,item) {
                     link = linkBase + this.id;

                     $('#sbItems').append('<li><b><a href="' + link + '" id="idNum' + 
i + ' ">' + this.title + '</a> - </b>' + this.summary + '</li>');                    
                 });

                 $('#sbItems a').click(function () {                        
                     var str = $(this).attr('id');                         
                     if (str.length == 7) {                      
                          itemId = str.slice(5,6);
                     } else if (str.length == 8) {
                          itemId = str.slice(5,7);
                     }
                 **// I want to get (json.items[itemId].id) which is any id from the   
link that is clicked and then store it in citeAjax()**  


                 }); // END Click event    

}).fail(function() {
    alert("Ajax call failed!");
});

主.js,

我想用

promise.done(function (json) {
   // do something with the ajax request from any id that's inserted into the url
});

谢谢您的帮助

4

2 回答 2

0
 var itemId = ''; //store globally in first loaded file
function citeAjax(citationId) {
//do something with citationid in here or your ajax call
 return $.ajax({
          type: 'GET',
          url: 'https://www.sciencebase.gov/catalog/itemLink/' + citationId +    
'?format=jsonp',
          jsonpCallback: 'getSBJSON',
          contentType: "application/json",
          dataType: 'jsonp'             
     });
}
$('#sbItems a').live('click' function () {                        
                 var str = $(this).attr('id');                         
                 if (str.length == 7) {                      
                      itemId = str.slice(5,6);
                 } else if (str.length == 8) {
                      itemId = str.slice(5,7);
                 }
})


 //call again 
citeAjax(itemID) // itemID should be updated
于 2013-02-23T21:08:09.193 回答
0

第一,我建议再次将您的应用程序视图与应用程序模型混合。

如果您希望在 citation.js 中获取数据,首先使用 $.data() 将 ajax 数据绑定到您的视图,例如,绑定到 $('#sbItem')

然后从那里读到 citation.js

于 2013-02-23T20:56:01.997 回答