2017-06-15 64 views
1

我有一個tabris.js應用程序,我需要連接到SQL數據庫。爲了做到這一點,我決定最好的選擇是創建一個快速的REST API,然後對其進行XMLHttpRequests。當應用程序發出請求時,API會顯示已發出GET請求,甚至會響應結果。我在瀏覽器中測試過,發現結果完美無缺。問題是XHR的readystate從不離開1,因此onload/onreadystatechange永遠不會被調用。有一次,我有這個應用程序工作,所以我不知道發生了什麼。我將在下面包含一些模擬API代碼和Tabris.js代碼。Tabris.js XMLHttpRequests不接受響應:readystate 1

API:

router.get('/', function(req, res) { 
    res.json({Mock: 'Code'}) 
}) 

Tabris:

const xhr = new XMLHttpRequest() 

xhr.onload = function() { /* Not called */ } 
xhr.onerror = function() { /* Not called */ } 
xhr.onabort = function() { /* Not called */ } 
xhr.ontimeout = function() { /* Not called */ } 

xhr.onreadystatechange = function() { 
    switch (xhr.readyState) { 
     case 1: console.log('opened, not sent'); break // Called 
     case 2: console.log('sent, awaiting response'); break // Not called, even though the API gets the request 
     case 3: console.log('response received, downloading'); break // Not called 
     case 4: console.log('finished'); break // Not called 
    } 
} 

xhr.open('GET', 'http://ip.ad.dr.ess:port/', true) 
xhr.send() 

我還要補充的是,獲取API不工作對我也同樣,雖然該請求被接受的API。

+0

你能打印收到的請求頭嗎? – Moritz

+0

Access-Control-Allow-Origin:*,連接:保持活動,日期:(日期),X-Powered-By:Express –

+0

是否有可能打到本地服務器並且該端口未打開以便連接從外面?即使您使用的是本地網絡ip(192.168 ....),您仍然需要打開一個端口才能通過同一網絡上的電話或模擬器連接到該服務器。 – Dested

回答

0

事實證明,我的代碼完全一樣,今天上午我開始工作時開始工作。對於遇到同樣問題的任何人,不幸的是,除了最後一件事,我沒有一個確鑿的答案。我在開始工作之前做過更新的tabris。雖然這沒有做任何事情,但取代了我從最新開始就已經擁有的文件。我也試着在另一個網站上測試它,它似乎已經超越了它之前的區塊。對我而言,我用http://ip.jsontest.com