2016-08-12 29 views
0

我正在嘗試編輯一個URL,這是我在AJAX調用中發送的。在AJAX調用中編輯URL

function saveEdit() { 
    // logic for updating an existing item 
       $.ajax({ 
       url: "https://localhost/api/1/databases/geolocation/collections/boom/"+globalData._id.$oid+"?apiKey=veTqID_gkb74tG-yL4MGcS1p2RRBP1Pf", 
       type: "PUT", 
       data: JSON.stringify({ Item:Item.value , Location: Location.value , Category: Category.value , Description : Description.value , Quantity: Quantity.value}), 
       contentType: "application/json" 
      }); 

在上面的代碼中,我想用IP代替「localhost」,當網站啓動時。我將從配置文件中讀取IP。

嘗試連接字符串,沒有工作。有什麼建議麼?

所預期的那樣:

https://x.x.x.x/api/1/databases/geolocation/collections/boom/ 
+1

你是如何從配置文件中獲取IP? – pmahomme

+0

爲了澄清,基本上你想'url:「https://」+ configured_host +「/ api/1/... etc ......」,「? –

+0

是的,正確的...... – gueverra

回答

0

試試這個:

function saveEdit() { 
    var useLocalHost = false; // flag to taest if you want to do the replace or use the localhost parameter 
    var localhostUrl = "https://localhost/api/1/databases/geolocation/collections/boom/"+globalData._id.$oid+"?apiKey=veTqID_gkb74tG-yL4MGcS1p2RRBP1Pf"; 
    var url = useLocalHost ? localhostUrl : localhostUrl.replace("localhost","x.x.x.x"); 

    // logic for updating an existing item 
    $.ajax({ 
     url: url, 
     type: "PUT", 
     data: JSON.stringify({ Item:Item.value , Location: Location.value , Category: Category.value , Description : Description.value , Quantity: Quantity.value}), 
     contentType: "application/json" 
    }); 
} 
+0

嘗試將更新哪一個工作 – gueverra

0

嘗試String.prototype.replace()

var url = "https://localhost/api/1/databases/geolocation/collections/boom/"+globalData._id.$oid+"?apiKey=veTqID_gkb74tG-yL4MGcS1p2RRBP1Pf" 
if(url.indexOf(UP) !== -1){ 
    var IP = GetIPfromConfig(); 
    url = url.replace(/localhost/, IP); 
} 
0

首先,如何使用參數:

function saveEdit(host, key) { 
    // logic for updating an existing item 
       $.ajax({ 
       url: "https://" + host + "/api/1/databases/geolocation/collections/boom/" 
        + globalData._id.$oid + "?apiKey=" + key, 
       type: "PUT", 
       data: JSON.stringify({ Item:Item.value , 
             Location: Location.value , 
             Category: Category.value , 
             Description : Description.value , 
             Quantity: Quantity.value}), 
       contentType: "application/json" 
      }); 

但是,現在你已經推出了從saveEdit函數中獲取host到調用者的位置。

如果主機是服務,很容易的頁面相同的主機,它只是
saveEdit(window.location.hostname, myApiKey)

如果它的一些其他主機,從配置文件就像你說的(這裏是配置文件?在你的服務器上?),你必須以某種方式將它傳遞給javascript調用者。 一種方法是將其附加到data-屬性,可能在按鈕或父div或甚至正文上。
<div id="thing_container" data-api-host="$configured_host">
使用$var${var}或任何您的服務器端堆棧使用。

你可以得到的東西,如

var elem = document.getElementById('thing_container'); 
var api_host = elem.getAttribute('data-api-host'); 
saveEdit(api_host, myApiKey);