Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript XMLHttpRequest在react本机应用程序上不起作用_Javascript_Android_Node.js_React Native_Xmlhttprequest - Fatal编程技术网

Javascript XMLHttpRequest在react本机应用程序上不起作用

Javascript XMLHttpRequest在react本机应用程序上不起作用,javascript,android,node.js,react-native,xmlhttprequest,Javascript,Android,Node.js,React Native,Xmlhttprequest,我正在使用XMLHttpRequestAPI从react原生android应用程序的服务器请求资源 这是我的应用程序代码(客户端) 上述服务器端代码在浏览器请求时成功运行,但在客户端(react native app)请求时不起作用。 任何答复都将不胜感激 好的。。。在客户端,我刚刚创建了一个按钮。触摸按钮时,将调用显示功能。此show函数将创建一个新的XMLHttpRequest(localhost:3000/show\u react)到在端口3000处运行的localhost服务器 如果re

我正在使用XMLHttpRequestAPI从react原生android应用程序的服务器请求资源 这是我的应用程序代码(客户端)

上述服务器端代码在浏览器请求时成功运行,但在客户端(react native app)请求时不起作用。 任何答复都将不胜感激

好的。。。在客户端,我刚刚创建了一个按钮。触摸按钮时,将调用显示功能。此show函数将创建一个新的XMLHttpRequest(localhost:3000/show\u react)到在端口3000处运行的localhost服务器


如果react本机应用程序中的请求URL实际上是
localhost:3000/show\u react
,那么您的问题是
localhost
指向您的本地设备(即智能手机)。URL需要可以从运行react本机应用程序的设备访问。尝试在您的设备(即智能手机)上的Safari浏览器中浏览到URL

为什么不使用
fetch
?这是一个在React Native中支持的更加友好的API,但XMLHttpRequestAPI更容易学习。所有的语法都类似于纯javascript XMLHttp请求
fetch
是Web API的一部分,就像XMLHttpRequest一样,是javascript,我不理解你关于“语法类似于纯javascript”的说法<与XMLHttpRequest不同,code>fetch本身也有更多的功能,并且由React-Native支持。在我看来,这并不容易学。您可以使用
fetch
在3行代码中完成任务,而不是使用XMLHttpRequest执行8-10行代码。React Native支持XMLHttpRequest。您的代码似乎没有问题,您能否详细说明它是如何不工作的,您收到了什么,是否有任何错误等?另外,您是否可以与另一台服务器进行检查,以确保问题与XMLHttpRequest有关?
import React,{Component} from 'react';
import {Text,View,StyleSheet,TouchableOpacity} from 'react-native';
class Home extends Component
{
  state={con:''}

show=()=>
{
    alert("show function called");
    var req=new XMLHttpRequest();
    req.onreadystatechange=(e)=>
    {
        if(req.status==200 && req.readyState==4)
        {
            alert(req.responseText);
        }
    }
    req.open("GET","http://localhost:3000/show_react");
    req.send();
}

render()
{
    return(
    <View style={styles.container}>
    <TouchableOpacity onPress={()=>this.show()} style={styles.box}><Text>Click</Text></TouchableOpacity>
    <Text>{this.state.con}</Text>
    </View>
    );
}
}  
  export default Home;

const styles=StyleSheet.create({
box:
{
    padding:10,
    width:200,
    marginTop:10,
    backgroundColor:'rgba(215, 44, 149, 0.7)',
    alignItems:'center'
},
container:
{
    flexDirection:'row',
    justifyContent:'center'
}
});
app.get("/show_react",function(req,res){
console.log("show_react called");
res.send("hii react");
});