2017-10-16 3 views
0

désolé pour la question idiote. Je suis relativement nouveau pour réagir natif. J'ai travaillé pour récupérer la réponse json du serveur. L'API du serveur renvoie une chaîne s'il y a une erreur ou retourne un objet json si elle réussit. est-il possible de comparer la réponse pour voir si c'est une chaîne ou une variable json?Réagir avec la réponse json native si chaîne ou objet

Vous ne savez pas comment réaliser ce qui précède toute aide serait appréciée.

ici est mon code

API.js

var API = { 

    SetupBuyOnline(email, serialNumber, platformType) { 
     var url = 'https://<urlomitted>/SetupBuyOnline'; 
     return fetch(url, { 
      method: 'GET', 
      headers: { 
       'Content-Type': 'application/json; charset=UTF-8', 
       'Accept': 'application/json', 
       'operating_system': platformType, 
       'email': email, 
       'serialNumber': serialNumber 
      } 
     }).then((res) => res.json()); 
    } 
    }; 

trouver userScreen.js

findUserScreen(){ 
// this.props.navigation.navigate('JoinNowScreen') 
StudentApi.SetupBuyOnline('[email protected]', deviceId, "iOS") 
.then((responseData) => { 
    if(typeof(responseData) == 'string') 
    { 
    console.log('got api call ' + responseData); 
    alert('test = ' + responseData); 
    } 
    else 
    { 
    console.log('got api call ' + responseData); 
    alert(responseData); 
    } 
}) 

}

Je ne sais pas ce que je fais mal. Merci d'avance

Répondre

2

Autre que de changer votre == pour === (égalité stricte) pas beaucoup. Mais travaillera avec l'égalité normale.

Ne sachez pas ce que vous faites mal, parce que ce code fonctionne très bien.

ce que je ferais à la place est d'avoir une réponse JSON comme si

"{ error: true, }" "{ error: false, data: yourDataSentByTheServer! }" de cette façon il vous suffit de vérifier s'il y a une propriété d'erreur dans votre réponse JSON.

function stringType(){ 
 
    const responseData = 'hello'; 
 
    if(typeof(responseData) === 'string') 
 
    { 
 
    console.log('got api call ' + responseData); 
 
    alert('test = ' + responseData); 
 
    } 
 
    else 
 
    { 
 
    console.log('got api call ' + responseData); 
 
    alert(responseData); 
 
    } 
 
} 
 

 
function objType(){ 
 
    const responseData = { 1:'hello', 2: 'koko' } 
 
    if(typeof(responseData) === 'string') 
 
    { 
 
    console.log('got api call ' + responseData); 
 
    alert('test = ' + responseData); 
 
    } 
 
    else 
 
    { 
 
    console.log('got api call ' + responseData); 
 
    alert(responseData); 
 
    } 
 
}
<button onClick="stringType();">Click me for string</button> 
 
<button onClick="objType();">Click me for obj</button>

+1

bizarre. quand j'ai essayé avant de ne pas le détecter comme une chaîne. En tout cas merci pour votre aide :) – dogwasstar

+0

D'accord :) mais considérez mon option pour votre JSON, c'est une bonne approche pour garder les choses concises :) – WilomGfx