2015-07-22 55 views
0
var $hashSearch = $('#hash-search'); 
var $text = $('#hashtag'); 
var $results = $('#results'); 
var $hashTemp = _.template($('#hash-template').html()); 

$hashSearch.on('submit', function(event){ 
event.preventDefault(); 
console.log('submitted form') 

var searchHash = $text.val(); //strip spacing from search 


$.ajax({ 
    type: 'GET', 
    url:'https://api.instagram.com/v1/tags/' + searchHash + '/media/recent?client_id=XXXXXXXXXXXXXXX', 
    dataType: 'jsonp', 
    crossDomain: true, 
    success: function(data){ 
     var getImageArray = (data.data[0].images.low_resolution.url) 
     var getCapArray = (data.data[0].tags.text) 
     _.each(data.data, function(obj){ 
      var image = (obj.images.low_resolution.url); 
      var text = (obj.caption.text); 
      var list = new HashList(image, text); 
      console.log(image, text); 

      list.save(); 

      list.render(); 
     }); 
     } 
    }); 
}); 

我正在为我的项目使用Instagram的API。在我的主页上,用户键入内容,并在提交时显示与搜索内容有关的照片列表。如果用户在WITH空格中键入值,则会发生错误,因为这些标记都列出了WITHOUT空格。是否有任何方法来遍历每个搜索过滤和删除间距?如何从搜索输入中删除空格,以便它与API标记(没有空格的标记)匹配?

回答

0

一个解决办法是删除空格,当你输入的值赋给searchHash

var searchHash = $text.val().replace(/\s/g, ''); 
+0

这工作完美无瑕。谢谢! –

0

使用正则表达式:

var searchHash = $text.val(); 
searchHash = searchHash.replace(/\s/g, ''); 

\ s是“空白”正则表达式,g是“全局”标志,意思是匹配ALL \ s(空格)。

0

如果你想移除搜索项空间,那么你必须添加略高于AJAX下面的代码:

searchHash = searchHash.replace(/ /g,""); 

它将从字符串替换的空间。

0

如果你想搜索多个标签,试试这个,看看它是否工作(我不能出于显而易见的原因测试此):

  1. 与空间的HTML代码替换空间,因为这不会引起你的HTTPS请求,打破以开始:var searchHash = $text.val().replace(/\s/g, '%20');
  2. 使用略有不同的API调用:url:'https://api.instagram.com/v1/tags/search?q=' + searchHash + '/media/recent?client_id=XXXXXXXXXXXXXXX',

这将导致看起来像查询:https://api.instagram.com/v1/tags/search?q=fireworks%20explosions%20and%20grand%20finales/media/recent?client_id=XXXXXXXXXXXXXXX

祝你好运!