Home php c# sql c c++ javascript python java go android git linux asp.net django .net node.js ios xcode cocoa iphone mysql tomcat mongodb bash objective-c scala visual-studio apache elasticsearch jar eclipse jquery ruby-on-rails ruby rubygems android-studio spring lua sqlite emacs ubuntu perl docker swift amazon-web-services svn html ajax xml java-ee maven intellij-idea rvm macos unix css ipad postgresql css3 json windows-server vue.js typescript oracle hibernate internet-explorer github tensorflow laravel symfony redis html5 google-app-engine nginx firefox sqlalchemy lucene erlang flask vim solr webview facebook zend-framework virtualenv nosql ide twitter safari flutter bundle phonegap centos Register | Login | Edit Tags | New Questions | 繁体 | 简体


10 questions online user: 28

0
votes
answers
12 views
+10

jquery background-image

-4

如何用Jquery添加背景圖片,如果圖片的名稱是這樣的:../image(01).png,如果我以這種方式放置名稱../image01如果它工作,但不是當它有括號的圖像的名稱jquery background-image

+0

你能更好地解釋你想要什麼嗎 –

+0

沒有實際的代碼示例,不知道。但我同意,聽起來你需要擺脫這些括號。 – Snowmonkey

沙发
0
-1

聲音給我像URL編碼問題。

板凳
0
0

嘗試:/image%2801%29.png

percent+number東西被稱爲「百分比編碼」,並且是編碼符號的URL的方法,所以28是(和29是)(見here爲好)。

您沒有提供任何代碼示例,但我認爲這是問題,考慮您提供的少量信息。如果它不起作用,請編輯您的問題。另外,下一次你應該問google a bit之前,並且當你問的時候總是要包含相關的代碼示例。

+1

問題是,當我加載一個名稱中包含括號的圖像時,它不會向我顯示背景圖像,但如果圖像名稱中沒有括號,它可以正常工作,我正在使用數據庫提取圖像的名稱,所以我無法更改它們的名稱 它不起作用 $(「#preview_front」).css('background-image','url(../img/customcode/images/camaro- GT(07).PNG)'); 它正常工作 $(「#preview_front」)。css('background-image','url(../img/customcode/images/camaro-gt07.png)'); – Olbeng

+0

@Olbeng再次,你需要擺脫括號。嘗試:'$(「#preview_front」).css('background-image',url('../ img/customcode/images/camaro-gt%2807%29.png'))'。如果你從DB加載鏈接,你需要替換括號,即'extractString.replace('(','%28')' – yuvi

0
votes
answers
12 views
+10

爲每個訂閱創建於掃描操作符的新種子對象

1

RxJS 5.5.2爲每個訂閱創建於掃描操作符的新種子對象

我有下面的代碼誰分裂的數字陣列爲對象,具有2個屬性「小」的數字越小則4和'大'其餘。

const o = from([1, 2, 3, 4, 5, 6]).pipe(
    scan<number, {}>((a, b) => { 
    if (b < 4) { 
     a['small'].push(b); 
    } else { 
     a['big'].push(b); 
    } 
    return a; 
    }, { 
    'small': [], 
    'big': [] 
    }) 
); 
console.log('subscription 1'); 
o.subscribe(x => console.log(JSON.stringify(x))); 
console.log('subscription 2'); 
o.subscribe(x => console.log(JSON.stringify(x))); 

認購1控制檯打印後:

{"small":[1,2,3],"big":[4,5,6]} // this is ok 

訂購2臺打印後:

{"small":[1,2,3,1,2,3],"big":[4,5,6,4,5,6]} // this is not ok 

有沒有開始一個新的種子對象每次有人贊同呢?

沙发
0
2

另一種選擇是將管道封裝在defer塊中,該塊將在訂閱時重建源流。

defer(() => 
    from([1, 2, 3, 4, 5, 6]).pipe(
    scan<number, {}>((a, b) => { 
     if (b < 4) { 
     a['small'].push(b); 
     } else { 
     a['big'].push(b); 
     } 
     return a; 
    }, { 
     'small': [], 
     'big': [] 
    }) 
) 
); 

每個訂閱都會調用推遲塊中的方法並訂閱結果。儘管像@arturgrzesiak提到的那樣,變異數組在函數式編程和擴展功能反應式編程中被看作反模式。

板凳
0
2

掃描累加器({ small: [], big: [] })被.push突變,這是一種反模式,可能很容易導致意外的行爲。防止改變先前發出的值

一種選擇可能是:

scan<number, {}>((a, b) => { 
    if (b < 4) { 
    return Object.assign({}, a, {small: a.small.concat([b])}); 
    } else { 
    return Object.assign({}, a, {big: a.big.concat([b])}); 
    } 
}, { 
    'small': [], 
    'big': [] 
}) 

不知道你正在試圖完成什麼,但它可能是值得看一看的partition運營商,這將產生兩個單獨的值流如const [small, big] = someStream.partition(x => x < 4);

+2

看來OP正在使用Typescript,所以你可以簡化使用ES7賦值符號'{... a,small:[... a.small,b]}' – paulpdaniels

+0

@paulpdaniels好點 –

0
votes
answers
11 views
+10

如何在每秒鐘向var添加數字

0

作爲Javascript的初學者,我試圖製作一個點擊遊戲。我不知道如何每秒向var添加一個數字如何在每秒鐘向var添加數字

下面是目前的代碼。我不確定如何讓我的一個「沉悶的礦工」每秒自動向玩家添加硬幣。假設有兩個汽車礦工,那麼玩家每秒可以獲得4個硬幣。還有如何顯示玩家自動製作多少。

謝謝!

let borkCoins = 0; 
 

 
let dankMiner = 0; 
 

 
const earnBork =() => { 
 
    borkCoins += 1; 
 
    displayScreen(); 
 
}; 
 

 
const buydankMiner1 =() => { 
 

 
    if (borkCoins >= 20) { 
 
    dankMiner += 1; 
 
    borkCoins -= 20; 
 
    displayScreen(); 
 
    } else { 
 
    alert("Insufficient funds!") 
 
    } 
 
}; 
 

 
const displayScreen =() => { 
 
    document.getElementById("bork-coins").innerText = 
 
    borkCoins; 
 
    document.getElementById("dankMiner").innerText = 
 
    dankMiner; 
 
}; 
 

 
displayScreen();
<h3>Your BorkCoins: <span id="bork-coins"></h3> 
 

 
<img src="https://i.pinimg.com/736x/ef/6a/cf/ef6acfc481b76637b71d4a71db7de82a--dog-birthday-animal-memes.jpg" 
 
    height="80" width="80" id="bork-coins" onclick="earnBork();"> 
 
    
 
     <p>Click on Gabe the Doggo to earn a BorkCoin!</p> 
 
     
 
     <h3>Shop</h3> 
 
     
 
     <p>Dank Miner <i>(2 BorkCoins/sec)</i> 
 
    <br>Your Dank Miner(s): <span id="dankMiner"></span></p> 
 
    <button id="dank-miner" onclick="buydankMiner1();">Buy 1 (20 BorkCoins)</button>

+1

試試setTimeOut? https://developer.mozilla.org/fr/docs/Web/API/WindowTimers/setTimeout – Cedric

+0

或setInterval https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setInterval – user184994

沙发
0
0

添加,檢查礦工的數量區間:

setInterval(() => { 
    if (dankMiner > 0) { 
    borkCoins += dankMiner; 
    displayScreen(); 
    } 
}, 1000); 
板凳
0
1

可以使用setInterval功能,做這樣的事情:

let borkCoins = 0; 
 
let dankMiner = 0; 
 

 
const earnBork =() => { 
 
    borkCoins += 1; 
 
    displayScreen(); 
 
}; 
 

 
/* Code Added */ 
 
setInterval(earnBork, 1000); 
 
/*--*/ 
 

 
const buydankMiner1 =() => { 
 
    if (borkCoins >= 20) { 
 
    dankMiner += 1; 
 
    borkCoins -= 20; 
 
    displayScreen(); 
 
    } else { 
 
    alert("Insufficient funds!") 
 
    } 
 
}; 
 

 
const displayScreen =() => { 
 
    document.getElementById("bork-coins").innerText = 
 
    borkCoins; 
 
    document.getElementById("dankMiner").innerText = 
 
    dankMiner; 
 
}; 
 

 
displayScreen();
<h3>Your BorkCoins: <span id="bork-coins"></span></h3> 
 
<img src="https://i.pinimg.com/736x/ef/6a/cf/ef6acfc481b76637b71d4a71db7de82a--dog-birthday-animal-memes.jpg" height="80" width="80" id="bork-coins" onclick="earnBork();"> 
 
<p>Click on Gabe the Doggo to earn a BorkCoin!</p> 
 
<h3>Shop</h3> 
 
<p>Dank Miner <i>(2 BorkCoins/sec)</i> 
 
    <br>Your Dank Miner(s): <span id="dankMiner"></span></p> 
 
<button id="dank-miner" onclick="buydankMiner1();">Buy 1 (20 BorkCoins)</button>

0
votes
answers
11 views
+10

使用Google Apps腳本進行條紋付款

0

試圖使用this示例代碼在Google Apps腳本中創建條紋結帳和付款。使用Google Apps腳本進行條紋付款

中將Html.HTML文件

<!DOCTYPE html> 
 
<!-- modification of https://stripe.com/docs/checkout#integration-custom --> 
 
<button id="customButton">Purchase</button> 
 

 
<script src="https://checkout.stripe.com/checkout.js"></script> 
 
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 

 
<script> 
 
var handler = StripeCheckout.configure(
 
{ 
 
    key: 'pk_test_UUbDY16wDCECOujIs0vQ2vTi', 
 
    image: 'https://i.imgur.com/M0ku9HH.png', 
 
    token: function(token) 
 
    { 
 
    // Use the token to create the charge with a server-side script. 
 
    // You can access the token ID with `token.id` 
 
    google.script.run.withSuccessHandler(chargeSuccess) 
 
    google.script.run.withFailureHandler(chargeFailure) 
 
    google.script.run.processCharge(token); 
 
    } 
 
} 
 
); 
 

 
$('#customButton').on('click', function(e) 
 
{ 
 
    // Open Checkout with further options 
 
    handler.open(
 
    { 
 
    name: 'ASD Anastasiya Ballet S.', 
 
    description: 'Pagamento online' 
 
    }); 
 
    e.preventDefault(); 
 
}); 
 
function chargeSuccess(result) { 
 
    // handle response code client side 
 
} 
 
function chargeFailure(error) { 
 
    // client error handling 
 
} 
 
</script>

這裏GS.gs文件

// IFRAME mode required 
function doGet() { 
return HtmlService.createHtmlOutputFromFile('HTML') 
.setSandboxMode(HtmlService.SandboxMode.IFRAME); 
} 

/** 
* Read Stripe token passed from google.script.run instead of 
* using a form POST request - which can't happen in HtmlService. 
* 
* @param {Object} token from checkout.js 
* @return {number} HTTP Response code 
*/ 
function processCharge(token) { 


var tokenId = token.id; 
var stripeEmail = token.email; 

// Create a Customer (optional) 
/* 
var path = "/customers"; 
var customer = Stripe_PostRequest(path, [], [], { 
    "description": "test customer", 
    "source": tokenId, 
    "email": stripeEmail 
}); 

var custId = JSON.parse(customer.getContentText()).id; 
*/ 

// Create a Charge 
path = "/charges"; 
var charge = Stripe_PostRequest(path, [], [], { 
    "currency": "usd", 
    "amount": "500", 
    //"customer": custId 
}); 

return charge.getResponseCode(); 
} 

/** 
* Generic function for making a POST request to the Stripe API. 
* Provided by Stripe support 
* 
* @param {string} path 
* @param {Object} parameters 
* @return {HTTPResponse} 
*/ 
var Stripe_PostRequest = function(path, fields, expandableFields, parameters) { 
    // Expand related fields when accessing sub-properties 
    // (e.g. `customer.email` should expand the customer 
    // object when retrieving a charge). 
    if (expandableFields !== undefined) { 
    parameters["expand[]"] = []; 
    fields.forEach(function(field) { 
     field = field.split(".")[0]; 
     if (expandableFields.indexOf(field) !== -1) { 
     parameters["expand[]"].push("data." + field); 
     } 
    }); 
    } 

    var scriptProperties = PropertiesService.getScriptProperties(); 
    var secret = scriptProperties.getProperty('testSecret'); 

    var options = { 
    "method" : "post", 
    "headers": { 
     "Authorization": "Bearer " + secret, 
     "User-Agent": "Stripe Example/0.1" 
    } 
    }; 
    var url = "https://api.stripe.com/v1" + path + serializeQueryString(parameters); 
    return UrlFetchApp.fetch(url, options); 
} 

/** 
* Serialize a dictionary to a query string for GET requests 
*/ 
var serializeQueryString = function(parameters) { 
    var str = []; 
    for (var key in parameters) { 
    var value = parameters[key]; 
    if (parameters.hasOwnProperty(key) && value) { 
     if (value.map) { 
     str.push(value.map(function(array_value) { 
      return key + "=" + encodeURIComponent(array_value); 
     }).join("&")); 
     } else { 
     str.push(key + "=" + encodeURIComponent(value)); 
     } 
    } 
    } 
    return '?' + str.join("&"); 
} 

的形式,做工精細,但沒有創建費用,因爲似乎沒有令牌創建。 作爲根本不是一個JS專家,我不知道,如果功能

令牌:功能(令牌)

調用

google.script.run.processCharge(令牌);

正確執行。

+0

首先,你的函數調用看起來不工作的例子,如:google.script.run.withSuccessHandler(chargeSuccess) .withFailureHandler(chargeFailure) .processCharge(令牌); – Kos

+0

是的,我改變了它,假設不清楚。這不是問題,因爲我無法發送正確的密鑰。不確定Google Script POST創建功能是否正常工作。任何使用Google Script創建標準stripe.charges.create調用的方式。 – davide445

沙发
0
0

您的代碼失敗,因爲您已經註釋了custId - 必須提供。這樣做沒有任何壞處,它只會創建一個測試客戶。否則,在「條帶」控制面板中創建一個客戶,並將該ID複製到custId中。

您可以隨時查看「查看>執行記錄」以獲取腳本失敗原因的線索。

0
votes
answers
11 views
+10

我想根據用戶輸入創建一個功能。我在做什麼我的代碼?

0

我的目標是獲取不同變量的用戶輸入,然後使用輸入來創建一個公式。方程應該像這樣讀取U1 = 2 *((DM/2)(D2)); U2 = D1 /(DS/2); U3 =(U1-U2); U4 =(D2-D1); U =(U3/U4)。我想根據用戶輸入創建一個功能。我在做什麼我的代碼?

我必須做document.getelementbyId標籤還是有另一種方法。

 <html> 
     <head> 

     <script> 
     var DM 
     DM = prompt ("Moon's Diameter"); 
     var DE 
     DE = prompt ("Earth's Diameter"); 
      var DS 
     DS = prompt ("Sun's Diameter"); 
     var D1 
     D1 = prompt ("Distance from Earth to the Moon"); 
     var D2 
     D2= prompt ("Distance from Sun to the Moon"); 

     function umbra() { 
     var U1 = (2*((DM/2) * (D2)); 
     return (U1); 
     var U2 = (D1)*(DS/2); 
      return (U2); 
     var U3= U1-U2; 
     return (U3); 
     var U4 = (D2-D1); 
    return (U4) 
    var U = (U3/U4) 
    return (U) 
    } 
    document.write(umbra) 
    </script> 
    </head> 
    <body> 

    </body> 
    </html> 
+0

您有多個返回,函數將在第一次返回時退出。 – codeninja

+0

嘗試正確縮進代碼會更容易閱讀,而且您可能會發現,由於增加了易讀性(非常令人滿意),您可以自行計算出來。 – shash678

沙发
0
0

科瑞一個小網頁,使用HTML輸入字段,讓用戶輸入自己的號碼,創建「計算」按鈕,並在只讀輸入欄上點擊顯示結果。

考慮使用jQuery。它使事情變得更容易。

網絡上有一個bizillion計算器,就像這樣工作。谷歌「量計算」,「抵押貸款計算」,「自動計算」等等。

0
votes
answers
10 views
+10

爲什麼我無法從Chrome擴展中獲取圖像文件?

0

到了這一步,我不能用這樣的方法調用我的圖像。爲什麼我無法從Chrome擴展中獲取圖像文件?

我的錯誤在哪裏?

'<span style="width:100%;"><img src=' + chrome.extension.getURL('/images/load-data.gif') + '></span>' 
+0

取決於你想要在哪裏使用它。如果它位於網頁上,則需要在[web_accessible_resources](https://developer.chrome.com/extensions/manifest/web_accessible_resources)中聲明它。 – wOxxOm

+0

哦,我只是添加PNG格式,而不是GIF。哈哈。謝謝。 – Ananda

沙发
0
0

解決通過wOxxOm

添加.gif格式轉換成web_accessible_resources

{ 
    ... 
    "web_accessible_resources": [ 
    "images/*.png", 
    "images/*.gif", 
    ], 
    ... 
} 

感謝。

0
votes
answers
10 views
+10

選擇一個孩子的子女

1

爲什麼我不能在jQuery中選擇一個孩子的孩子?我想使用.children()方法和>選擇器向課程的孩子添加課程。請參見下面的代碼:選擇一個孩子的子女

$(function(){ 
     // main expansion element 
     $(".expander").click(function() { 
      var subShown = $(this).children("ul > li").hasClass("show"); 
      if (!subShown) { 
       $(this).children(".indented").slideDown('100').addClass("show"); 
       $(this).children(".caret").addClass("reversedCaret"); 
      } else { 
       $(this).children(".indented").slideUp('100').removeClass("show"); 
       $(this).children(".caret").removeClass("reversedCaret"); 
      } 
     }); 
    }); 

HTML:

<div class="expander"> 
        <span class="caret downCaret right visibleCaret">+</span> 
        <ul> 
        <li class="category">Item 1<a href="http://www.google.com"></a></li> 
        <li class="indented"><a href="http://www.google.com">Item 2</a></li> 
        <li class="indented"><a href="http://www.google.com">Item 3</a></li> 
        </ul> 
       </div> 

當我點擊expander它不會將該類添加到我的li元素。爲什麼?

+2

的'li'是在膨脹,這就是'兒童不直接孩子() '回報。你需要使用'find()'而不是'children()'。 'children()'和find('> *')基本相同' – Taplar

+0

我試過'.find()'但我無法正常工作。會在'.children()'之前還是之後? – kawnah

+2

看看斯科特的解決方案。你根本不用 - 要 - 完全使用孩子()。 – Taplar

沙发
0
2

JQuery documentation.children()

的。兒童()方法從.find()在不同。兒童()只 行進的單一電平向下DOM樹而.find( )可以遍歷 多層次選擇後代元素(孫, 等)以及。

你真的甚至不需要使用.children()這一點。簡單得多的解決方案是通過在選擇器之後向JQuery傳遞第二個參數,僅使用provide context for your queries

$(function(){ 
 
     // main expansion element 
 
     $(".expander").click(function() { 
 
     
 
      // Just for demonstration: ************************************************* 
 
      
 
      // 2 because of <span> and <ul> 
 
      console.log($(this).children().length);   
 
      
 
      // 0 because anything beyond children isn't returned in the first place 
 
      console.log($(this).children("ul > li").length); 
 
      // ************************************************************************* 
 
     
 
      // By passing "this" as the second argument to JQuery, after the selector, 
 
      // it sets the context for the search to only "this", so the entire DOM 
 
      // is not searched, just the object that "this" is bound to. 
 
      var subShown = $("ul > li", this).hasClass("show"); 
 
      if (!subShown) { 
 
       $(".indented", this).slideDown('100').addClass("show"); 
 
       $(".caret", this).addClass("reversedCaret"); 
 
      } else { 
 
       $(".indented", this).slideUp('100').removeClass("show"); 
 
       $(".caret", this).removeClass("reversedCaret"); 
 
      } 
 
     }); 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="expander"> 
 
    <span class="caret downCaret right visibleCaret">+</span> 
 
    <ul> 
 
    <li class="category">Item 1<a href="http://www.google.com"></a></li> 
 
    <li class="indented"><a href="http://www.google.com">Item 2</a></li> 
 
    <li class="indented"><a href="http://www.google.com">Item 3</a></li> 
 
    </ul> 
 
</div>

+0

謝謝你 - 但我仍然很難理解爲什麼我的版本不起作用?所以如果'.children()'在dom樹中下了一層,我的li就是div的兩層。所以考慮到這一點,不應該使用'.children()'和'>'選擇器給我什麼我想要的? – kawnah

+0

@kawnah'.children()'方法返回一組包**僅**子元素。因此,即使你的選擇器說要從那裏搜索更深,搜索將發生的元素集也就沒有任何元素在較低的深度。 –

+1

@kawnah我已經更新了答案,以包含一些示例,這些示例顯示調用'.children()'只會返回直接子節點,除此之外沒有其他任何內容。所以試圖深入搜索沒有任何回報。 –

板凳
0
0

如果您仍想接近它,你的(而不是給出答案呢,這是更好的方式),然後改變這個

$(this).children("ul > li") 

對此:

$(this).children('ul').children() 

選擇的孩子就是這樣。

+0

好的..我正在與斯科特馬庫斯的回答,但謝謝你 – kawnah

地板
0
0

可以使用.find('>ul>li'),例如:

var expander = $(".expander") 

expander.on('click', function(){ 
    var li = expender.find('>ul>li') 
    li.hasClass("show") 
}) 
4楼
0
0

.querySelector

document.querySelector("section > div").classList.add("my-gray");
.my-gray{ 
 
    background: gray; 
 
}
<section> 
 
Foo 
 
<div> 
 
Bar 
 
</div> 
 
</section>

0
votes
answers
9 views
+10

Jquery的3個datepickers一起

-2

我創建2個日期選擇器輸入字段上的左側,第一是日期,第二個是TO日期和我還創建與datepicker類一個div顯示在右側日期選擇日曆,以便前兩個輸入字段我用這個Jquery的3個datepickers一起

$(function() { 
    $('#datepickerSickFrom').datepicker({ 
    dateFormat: 'dd/mm/yy', 
    onSelect: function(dateText, inst) { 
     $('#dateTo').datepicker('option', 'minDate', new Date(inst.selectedYear, inst.selectedMonth, inst.selectedDay)); 
    } 
    }); 

    $('#datepickerSickTo').datepicker({ 
    dateFormat: 'dd/mm/yy', 
    onSelect: function(dateText, inst) { 
     $('#dateFrom').datepicker('option', 'maxDate', new Date(inst.selectedYear, inst.selectedMonth, inst.selectedDay)); 
    } 
    }); 
}); 

,現在我想這兩個輸入要連接到我創建的第三日期選擇器的div,我怎麼想這樣做呢?

這是我的HTML

<div class="group"> 
    <p class="inputIcon"><i class="fa fa-calendar" aria-hidden="true"></i></p> 
    <input type="text" class="setLabel datepicker" placeholder="11/30/2017" id="datepickerSickFrom"> 
    <i class="fa fa-caret-down" style="position: absolute;right: 0;top: 17px;" aria-hidden="true"></i> 
</div> 
<div class="group"> 
    <p class="inputIcon"><i class="fa fa-calendar" aria-hidden="true"></i></p> 
    <input type="text" class="setLabel datepicker" placeholder="11/30/2017" id="datepickerSickTo"> 
    <i class="fa fa-caret-down" style="position: absolute;right: 0;top: 17px;" aria-hidden="true"></i> 
</div> 
<div class="col-md-8"> 
    <div class="datepicker" id="sickPanelDatepicker"></div> 
</div> 
+3

你說的 「連接到第三日期選擇器」 是什麼意思?什麼樣的連接? – Vivek

+0

@Vivek所以當用戶選擇FROM日期,然後選擇TO日期,它應該顯示選擇範圍到第三個日曆,我顯示到div – andrew

+1

我看到引用4日期選擇器不是2 – charlietfl

沙发
0
1

此代碼應該做你想要做什麼。

$(function() { 
 

 
    $('#datepickerSickFrom').datepicker({ 
 
    dateFormat: 'dd/mm/yy', 
 
    onSelect: function(dateText, inst) { 
 
     $('#sickPanelDatepicker').datepicker('option', 'minDate', new Date(inst.selectedYear, inst.selectedMonth, inst.selectedDay)); 
 
    } 
 
    }); 
 
    $('#datepickerSickTo').datepicker({ 
 
    dateFormat: 'dd/mm/yy', 
 
    onSelect: function(dateText, inst) { 
 
     $('#sickPanelDatepicker').datepicker('option', 'maxDate', new Date(inst.selectedYear, inst.selectedMonth, inst.selectedDay)); 
 
    } 
 
    }); 
 
    $('#sickPanelDatepicker').datepicker({ 
 
    dateFormat: 'dd/mm/yy', 
 

 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script> 
 
<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"> 
 
<div class="group"> 
 
    <p class="inputIcon"><i class="fa fa-calendar" aria-hidden="true"></i></p> 
 
    <input type="text" class="setLabel datepicker" placeholder="11/30/2017" id="datepickerSickFrom"> 
 
    <i class="fa fa-caret-down" style="position: absolute;right: 0;top: 17px;" aria-hidden="true"></i> 
 
</div> 
 
<div class="group"> 
 
    <p class="inputIcon"><i class="fa fa-calendar" aria-hidden="true"></i></p> 
 
    <input type="text" class="setLabel datepicker" placeholder="11/30/2017" id="datepickerSickTo"> 
 
    <i class="fa fa-caret-down" style="position: absolute;right: 0;top: 17px;" aria-hidden="true"></i> 
 
</div> 
 
<div class="col-md-8"> 
 
    <br><br><br> 
 
    <div class="datepicker" id="sickPanelDatepicker"></div> 
 
</div>

+0

這應該也工作,如果我改變從** sickPanelDatepicker從**和日期** – andrew

0
votes
answers
9 views
+10

如何從MySql數據庫中獲取結果並將它們發送回API.ai

0

我需要一些幫助來確定SQL查詢的語法,同時通過連接到Google雲Mysql數據庫的api.ai webhook &使用它們。 雖然查詢工作,在 '請求被超時'如何從MySql數據庫中獲取結果並將它們發送回API.ai

'use strict'; 
const mysql = require('mysql'); 

exports.name = (req, res) => { 

    let action = req.body.result['action']; 

if (action === 'apple') { 


    callDB().then((output) => { 

     res.setHeader('Content-Type', 'application/json'); 
     res.send(JSON.stringify(output)); 
    }).catch((error) => { 

     res.setHeader('Content-Type', 'application/json'); 
     res.send(JSON.stringify(error)); 
    }); 

} 
}; 

function callDB() { 
    return new Promise((resolve, reject) => { 

    try { 

     var connection = mysql.createConnection({ 
      host: "<host>", 
      user: "<user>", 
      password: "<pass>", 
      database: "<DB>" 
     }); 

     connection.query("SELECT description AS solution FROM mtable WHERE title LIKE '%Breakfast%'", function (error, results, fields) { 
      if (!error) { 

       let response = "The result is: " + results[0].solution; 
       response = response.toString(); 
       let output = {'speech': response, 'displayText': response}; 
       console.log(output); 
       resolve(output); 

      } else { 

       let output = {'speech': 'Error. Query Failed.', 'displayText': 'Error. Query Failed4.'}; 
       console.log(output); 
       reject(output); 

      } 
     }); 
     connection.end(); 

    } catch (err) { 
     let output = {'speech': 'try-catch block error', 'displayText': 'try-catch block error3'}; 
     console.log(output); 
     reject(output); 

    } 

} 
); 
} 

如果我取代與此查詢,它的工作原理:

'SELECT描述AS解決方案從mtable WHERE ID LIKE 1001'

ID是列名,只有id`s

標題列名和標題,如早餐包等

這是網絡掛接JSON所示的錯誤的部分:

"metadata": { 
    "intentId": "<id>", 
    "webhookUsed": "true", 
    "webhookForSlotFillingUsed": "false", 
    "webhookResponseTime": 5000, 

"status": { 
"code": 206, 
"errorType": "partial_content", 
"errorDetails": "Webhook call failed. Error: Request timeout.", 
"webhookTimedOut": true 
    }, 

我引用的代碼如下線程, How to get results from MySql DB using node.js MySQL and send them back to API.ai

沙发
0
0

似乎是在您的查詢字符串聲明中的錯別字(接近「%早餐% ''):

connection.query('SELECT description AS solution FROM mtable WHERE title LIKE '%Breakfast%'', function (error, results, fields) { 

在分配您的查詢字符串變量, 'SELECT描述AS解決方案從mtable WHERE標題LIKE '%早餐%'' 被解釋爲一個數字(因爲%運營商)。

以任何方式修復您的單引號是否有幫助?

connection.query("SELECT description AS solution FROM mtable WHERE title LIKE '%Breakfast%'", function (error, results, fields) { 
+0

問候,這確實解決了錯誤,但我仍然沒有從數據庫中獲取任何數據。 json只是說超時。 (API.ai在超時之前僅等待5秒,可能是什麼解決方案?「狀態」:{ 「code」:206, 「errorType」:「partial_content」, 「errorDetails」:「Webhook調用失敗。錯誤:請求超時。「, 」webhookTimedOut「:true – Jarvis

+0

我對API.ai並不熟悉我只在您的JavaScript代碼中發現了一些奇怪的東西 如果它解決了您在問題中提到的第一個問題,您的問題與關於您當前問題(包含錯誤消息)和最重要的信息相關,爲每項涉及的技術(api.ai等)添加標籤。 – RogerC

板凳
0
0

問題必須在您的服務器端與MySQL。我每天都這樣做,並且在5秒鐘內用於查詢的情況下,它可以正常工作。

可能是你的Where子句正在創建全表掃描,因此超時返回Diagflow(> 5秒)或db連接中斷。

您需要在例程和結束週期之前設置定時器,查看您的持續時間。單獨從bash腳本運行查詢並查看需要多長時間。你會發現超時正在發生的地方。在條件兩邊都有搜索參數(%)肯定會比搜索字符串的開始時間(意味着以搜索開始)和%search%(找到包含的任何子字符串)花費更長的時間。

祝你好運。

0
votes
answers
9 views
+10

控制檯上出現意外的JavaScript輸出

0

我試圖運行一段Node.js代碼。這是代碼:控制檯上出現意外的JavaScript輸出

var fs = require("fs"); 
 
fs.readFile('input.txt', function(err, data) { 
 
    if (err) return console.error(err); 
 
    console.log(data.toString()); 
 
}); 
 

 
console.log("Program Ended"); 
 
var http = require("http"); 
 
http.createServer(function(request, response) { 
 

 
    // Send the HTTP header 
 
    // HTTP Status: 200 : OK 
 
    // Content Type: text/plain 
 
    response.writeHead(200, { 
 
    'Content-Type': 'text/plain' 
 
    }); 
 

 
    // Send the response body as "Hello World" 
 
    response.end('Hello World
'); 
 
}).listen(8081); 
 

 
// Console will print the message 
 
console.log('Server running at http://127.0.0.1:8081/');

當我跑在我的筆記本電腦上的Linux終端上,該input.txt的文件的內容出現在最後一行的「服務器運行」命令後, 。理想情況下,首先readfile命令輸出應該在那裏,不是嗎?

輸出出來如下:

計劃結束

服務器在運行....

(txt文件的內容)

+1

爲什麼要在那裏第一次,考慮'fs.readFile'是一個異步方法,不是順序是否正確? – Teemu

沙发
0
5

FS。 readFile()是一種異步方法,因此它可能會或可能不會在其他代碼完成之前完成,只是在完成時才完成。

退房readFileSync()

https://nodejs.org/api/fs.html#fs_fs_readfilesync_path_options

+0

雖然此鏈接可能有助於您對問題的回答,但您可以通過將鏈接的重要部分放入您的答案中來改善此答案,這可確保您的答案在鏈接被更改或刪除時仍然是答案:) – WhatsThePoint