【问题标题】:how to use ajax to post to local server?如何使用ajax 发布到本地服务器?
【发布时间】:2017-10-18 10:02:59
【问题描述】:

尝试做我的第一个 nodejs 项目。

我已经使用 Nodejs 构建了一个基于 Web 的服务器,它运行在 localhost:3000/home。

然后我使用 Cordova 构建了一个 android 应用程序并在模拟器上运行。我尝试将查询发送到服务器并让搜索结果返回以显示在应用程序上。但是,我在使用 ajax 时遇到了问题,我尝试了很多 url 的表达式,结果都是:找不到文件。

项目层次结构:

homecontroller.js 中的 post 函数(使用 express 和 ejs)

  app.post('/home', urlencodedParser, function(req, res) {
         var rsults = [];
         var pname = req.body.player_name;
         var tname = req.body.team_name;
         results[] = searchdatabase(pname,tname);
        res.render('home', {results: results});

在应用程序中:index.html

<form>
<input type="text" class="form-control" id="player_name"name="player_name">
 
<input type="text" class="form-control" id="team_name" name="team_name">
               
<button type="submit" class="btn btn-info" onclick="search">Search</button>

<script>
  function search(){
  var pname = $("[name='player_name']").val();
  var tname = $("[name='team_name']").val();
    
  jQuery.ajax({
     type: "POST",
     url: "http://localhost:3000/home",
     data: '{"pname": "pname", "tname": "tname"}',
     dataType: "json",
     cache: false,
     sucess: function(response)
     {alert("sent");}
     })
     }
</script>
</form>

这段代码很糟糕,可能是我在服务器上写的和应用程序的ajax请求不对应,或者我的ajax函数有问题。由于网络服务器运行良好,请提出一个解决方案来达到目的。

【问题讨论】:

  • 那么您的服务器也托管在您的移动设备上?
  • 不,我只是在设备网络浏览器上尝试过,发现它使用 10.0.2.2 而不是 localhost。只是想提供更多关于它的信息。该应用实际上只需要从服务器检索数据。

标签: android jquery node.js ajax cordova


【解决方案1】:

本地主机被设备识别为自身,这意味着如果您在计算机上托管服务器,并且您在计算机上与该服务器通信,则可以使用本地主机。

但是,如果您在不同的设备上运行您的网站,比如您的手机,则 localhost 会被该设备解释为自身,这意味着它显然不会与您的计算机通信。

现在为了让两个设备找到彼此,它们需要知道彼此的名称,即 IP 地址。如果两个设备都在同一个网络中(例如您的本地 WiFi),您可以使用它们的本地 IP 作为它们之间通信的一种方式。

如果您使用的是 Windows,请打开命令提示符并输入 ipconfig,或者如果您使用的是 Linux,请输入 ip addr 来获取您计算机的本地 IP。使用您找到的 IP (ipv4) 作为您发布到的地址(基本上将 localhost 替换为您找到的 IP)。然后再试一次。

【讨论】:

  • 我试过 url: "myIP:3000/home";但仍然出现相同的错误:“应用程序错误,net::ERR_FILE_NOT_FOUND(file:///home)。服务器和模拟器都在同一台计算机上运行,​​当我打开浏览器并输入 10.0.2.2:3000/ home(有人说是android localhost),web服务器也可以工作。
  • 假设您的计算机的 IP 是 52.120.71.160(当然不是,请检查您的 ipconfig)。然后你需要连接到:'52.120.71.160:3000/home'。 10.0.2.2 地址是连接到模拟器主机上 localhost 的一种巧妙方法。但是,如果您将应用程序部署到实际的移动设备上,这将永远无法工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-15
  • 2011-10-30
  • 2012-05-26
  • 1970-01-01
  • 1970-01-01
  • 2020-11-05
  • 1970-01-01
相关资源
最近更新 更多