2016-04-27 68 views
2

我開始學習react-native並在Android上使用fetch時遇到了一些問題。Javascript取回響應截止

try { 
    let response = await fetch(REQUEST_URL, { 
     method: "POST", 
     headers: { 
      'Accept': 'application/json', 
      'Content-Type': 'application/json' 
     }, 
     body: JSON.stringify({ 
      ***parameters*** 
     }) 
    }); 
    let responseJson = await response; 
    if(responseJson){ 
     // console.log(responseJson); 
     console.log(responseJson.text()); 
     // console.log(responseJson.json()); 
    } 
} catch(error) { 
    console.error(error); 
} 

請求被髮送正確,但答案並不在它的整體圖所示:

(**loads more data before**){"ID":"779","DESCRICAO":"ZXCVB","CLIENTENUMERO":"10133","CLIENTENOME":"Lda 1","TREGISTO":"2015\\/11\\/24 09:34:15","TTERMO":"","SITUACAO":"C","TIPO":"P","NOTIFICACOES":"email","NOTIFI_TAREFA":"","ESFORCOS_TOT":"4","TEMPOGASTO_TOT":"0:01:44","TEMPOGASTO_PES":"0:01:44","PROJECTO":"New Products","USERNAME":"AT","UREGISTO":"S","EMCURSO":"0","TULTIMO":"2015\\/12\\/18 20:37:56","EQUIPA":"","NIVEL":"AVISAX"},{"ID":"783","DESCRICAO":"123","CLIENTENUMERO":"10133","CLIENTENOME":"Lda 1","TREGISTO":"2015\\/11\\/24 09:43:26","TTERMO":"","SITUACAO":"C","TIPO":"P","NOTIFICAC 

正如你所看到的,JSON對象是不完整的。在瀏覽器中使用其他方法發送相同的請求會正確返回JSON。

我想知道這是一個實際的問題與獲取或Android。

我試着在提取時將大小和超時參數設置爲0,但它什麼也沒做。

編輯:還嘗試使用同步獲取,而不是異步,具有相同的效果:

fetch(REQUEST_URL, { 
    method: "POST", 
    headers: { 
     'Accept': 'application/json', 
     'Content-Type': 'application/json' 
    }, 
    body: JSON.stringify({ 
     ***params*** 
    }) 
}) 
.then((response) => response.text()) 
.then((responseText) => { 
    console.log(responseText); 
}) 
.catch((error) => { 
    console.warn(error); 
} 

也試過:

console.log(responseJson); 

console.log(responseJson.json()); 

編輯進一步澄清:

使用response.json()時,響應顯示爲json(如預期的那樣),但仍不完整。

回答

1

編輯::問題是與console.log限制它顯示在控制檯中的字符數。

快速的問題:

你能得到的全部JSON對象,如果你擊中郵遞員的終點?它可能是您的服務器/服務正在切斷信息。

最後,(我看到你在上面提到過),但是我總是使用'​​json'方法關閉響應obj,當我知道這是符號類型 - 這應該返回一個承諾。

fetch(REQUEST_URL, { 
    method: "POST", 
    headers: { 
     'Accept': 'application/json', 
     'Content-Type': 'application/json' 
    }, 
    body: JSON.stringify({ 
     ***params*** 
    }) 
}) 
//get the response and execute .json 
.then((r) => r.json()) 
//then listen for the json promise 
.then((j) => { 
    console.log(j); 
}) 
.catch((error) => { 
    console.warn(error); 
} 

讓我知道發生了什麼,如果你得到郵遞員(或提琴手撰寫)的完整迴應。

+0

從來沒有使用郵遞員,只是傾向於使用鉻的開發工具網絡的東西。在chrome中,請求以完整的JSON響應,但我沒有在那裏使用抓取,使用webix的webix.ajax()。post()方法。編輯:至於你的建議更改,我已經嘗試過,它以與我提到的response.json()類似的方式響應我也使用過。它將輸出打印爲json而不是普通文本,但仍然切斷。 –

+0

如果你把一個斷點放在你正在做console.log的地方,你能評估這個對象,看它是否是整體嗎?我不知道「(**之前加載更多數據)」部分中有多少數據 - 但是,如果數量很大,則可能是由於console.log而遇到了字符限制。 – user7811

+0

就是這樣。我使用原子核素的logcat控制檯,它只是沒有顯示整個事情。用json對象做了一些操作,它處理得非常好。乾杯。 –