2015-05-13 19 views
0

我具有從JSON響應返回三個圖像(肖像,方形和橫向)以下AJAX功能:應用正則表達式來URI變量在javascript

$.ajax({ 
      url: url, 
      method: 'GET', 
      headers: { 
       "Authorization": bearerToken 
      }, 
     }).then(function (response) { 
      var obj = response; 
      $("#imageid").css("border-color", "#ccc"); 
      $(".search-results").empty(); 
      for (var property in obj.entity.entries) { 
       if (obj.entity.entries.hasOwnProperty(property)) { 

         var imageURI = obj.entity.entries[property].uri + "&" + imageCacheBust; 
         $(".search-results").append($("<li><a href='" + imageURI + "' target='_blank'><div class='thumbnail'><img width='30' height='30' src='" + imageURI + "' target='_blank'/></img><div class='caption'><p>" + obj.entity.entries[property].orientation + "</p></div></a></li>")); 
        } 
       } 

     }).fail(function (data) { 
      $(".search-results").empty(); 
      $(".search-results").append("<p class='alert alert-danger'>Invalid ID</p>"); 
      $("#imageid").css("border-color", "red"); 
     }); 

景觀和方形圖像的URI被返回格式如下: http://xx.domain.com/api/v2/img/55527b6060b27c50d1def7b6?location=LANDSCAPE&1 http://xx.domain.com/api/v2/img/55527b6060b27c50d1def7b6?location=SQUARE&1

肖像圖像返回爲: http://xx.domain.com/api/v2/img/5550fdfe60b27c50d1def72d&43

我正在使用一個正則表達式在末尾d末尾爲肖像,因爲它沒有使用緩存(與其他人一樣)。但是,這不能正常工作,並且圖像沒有顯示出來。

+0

在肖像模式有什麼在'd' – vks

+0

之後,將錯誤的網址上傳並編輯。 – Matt

+0

看起來代碼只附加了非肖像圖像,並且對於肖像圖像沒有做任何事情。這是故意的嗎? – Ankit

回答

0

我想出的解決方案通過採取@Ankit理念的一部分,並追加圖像既ifelse語句,以及改變&第一個?

$.ajax({ 
     url: url, 
     method: 'GET', 
     headers: { 
      "Authorization": bearerToken 
     }, 
    }).then(function (response) { 
     var obj = response; 
     $("#imageid").css("border-color", "#ccc"); 
     $(".search-results").empty(); 
     for (var property in obj.entity.entries) { 
      if (obj.entity.entries.hasOwnProperty(property)) { 
       if(obj.entity.entries[property].orientation == 'PORTRAIT'){ 
        var imageURI = obj.entity.entries[property].uri + "?" + imageCacheBust; 
        $(".search-results").append($("<li><a href='" + imageURI + "' target='_blank'><div class='thumbnail'><img width='30' height='30' src='" + imageURI + "' target='_blank'/></img><div class='caption'><p>" + obj.entity.entries[property].orientation + "</p></div></a></li>")); 
       }else { 
        var imageURI = obj.entity.entries[property].uri + "&" + imageCacheBust; 
        $(".search-results").append($("<li><a href='" + imageURI + "' target='_blank'><div class='thumbnail'><img width='30' height='30' src='" + imageURI + "' target='_blank'/></img><div class='caption'><p>" + obj.entity.entries[property].orientation + "</p></div></a></li>")); 
       } 
      } 
     } 
    }).fail(function (data) { 
     $(".search-results").empty(); 
     $(".search-results").append("<p class='alert alert-danger'>Invalid ID</p>"); 
     $("#imageid").css("border-color", "red"); 
    }); 
+0

簡單地測試查詢字符串似乎是一個更強大和更精簡的解決方案,例如,url + =(url.indexOf('?')> = 0?'&':'?')+'buster ='+(new Date ())的getTime(); – Roberto

0
d[^d/]*$ 

使用this.Replace by d。參見demo。

https://regex101.com/r/mT0iE7/12

+0

問題在於,我需要保留最後一個'd',作爲URI的一部分。 – Matt

+0

@Matt你必須用'd'來代替。所以最後的'd'將會是der。 – vks

1

你試過split呢?如果我正確閱讀你的問題,你應該能夠取代這個:

var regex = /[^d\/]*$/; 
var imageURI = regex.exec(obj.entity.entries[property].uri); 

。 。 。有了這個 。 。 。

var imageURI = obj.entity.entries[property].uri.split("&")[0]; 

這將在uri值分成含有「http://xx.domain.com/api/v2/img/5550fdfe60b27c50d1def72d」和「43」的陣列,然後你只需引用具有0索引的第一部分(其,相信,是你正在尋找什麼) 。