Javascript Ajax从节点服务器到Codeigniter中控制器的post调用,数据未插入数据库

Javascript Ajax从节点服务器到Codeigniter中控制器的post调用,数据未插入数据库,javascript,php,jquery,node.js,codeigniter,Javascript,Php,Jquery,Node.js,Codeigniter,可能的重复项: 我尝试了上面的链接和其他与我的问题相关的链接。但没有得到任何解决方案 环境 操作系统:Windows7-64位 框架:CodeIgniter PHP MVC 客户端:Javascript-Jquery 服务器端:NodeJS 数据库:MySQL 我需要从服务器(Node+express)(server.js)到Codeigniter控制器文件进行http post调用 我正在使用jqueryajax在节点服务器.js文件中进行post调用。但post调用在客户端不起作

可能的重复项:

我尝试了上面的链接和其他与我的问题相关的链接。但没有得到任何解决方案

环境

  • 操作系统:Windows7-64位
  • 框架:CodeIgniter PHP MVC
  • 客户端:Javascript-Jquery
  • 服务器端:NodeJS
  • 数据库:MySQL
我需要从服务器(Node+express)(server.js)到Codeigniter控制器文件进行http post调用

我正在使用jqueryajax节点服务器.js文件中进行post调用。但post调用在客户端不起作用

代码示例:

控制器-
Welcome.php

<?php
Class Welcome extends CI_Controller {

public function __construct(){
  parent::__construct();
  $this->load->helper('url');
}

public function index(){
  $this->load->view('welcome_view');
}

function testFunction(){
  $getData = $this->input->post('sendData');
  $rec_data = $this->Welcome_model->testFunction($getData);
  echo json_encode($rec_data);
 }
}
<?php
Class Welcome_model extends CI_Model
{
    public function __construct(){
      parent::__construct();
      $this->load->helper(array('form','url'));
      $this->load->database();
    }

    function testFunction($getData){
      $this->db->query("INSERT INTO test_tbl(test) VALUES('$getData')");

      if($this->db->affected_rows()>0){
        $this->db->close();
        return 'true';
      }
      else{
        $this->db->close();
        return 'false';
      }
    }
}
<!DOCTYPE html>
<html lang="en">
<head>
    <title>view file</title>
</head>
<body>
  <div class="container">
      <button id="btn-id">Click me</button>
  </div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

<script type="text/javascript">

  var socket_link = "socket_link";
  var socket = io.connect(socket_link);

  $(document).on('click','#btn-id',function(e){
    var testData = "12345";
    socket.emit('send_data', testData);
  });
</script>
</body>
</html>
查看->
welcome\u view.php

<?php
Class Welcome extends CI_Controller {

public function __construct(){
  parent::__construct();
  $this->load->helper('url');
}

public function index(){
  $this->load->view('welcome_view');
}

function testFunction(){
  $getData = $this->input->post('sendData');
  $rec_data = $this->Welcome_model->testFunction($getData);
  echo json_encode($rec_data);
 }
}
<?php
Class Welcome_model extends CI_Model
{
    public function __construct(){
      parent::__construct();
      $this->load->helper(array('form','url'));
      $this->load->database();
    }

    function testFunction($getData){
      $this->db->query("INSERT INTO test_tbl(test) VALUES('$getData')");

      if($this->db->affected_rows()>0){
        $this->db->close();
        return 'true';
      }
      else{
        $this->db->close();
        return 'false';
      }
    }
}
<!DOCTYPE html>
<html lang="en">
<head>
    <title>view file</title>
</head>
<body>
  <div class="container">
      <button id="btn-id">Click me</button>
  </div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

<script type="text/javascript">

  var socket_link = "socket_link";
  var socket = io.connect(socket_link);

  $(document).on('click','#btn-id',function(e){
    var testData = "12345";
    socket.emit('send_data', testData);
  });
</script>
</body>
</html>
节点服务器已在我的项目中启动。正在侦听端口的服务器Onclick按钮在视图中,套接字将在视图中发出,套接字将接收server.js文件中的数据

我需要在server.js中完成ajax后期调用,它将调用控制器->模型->数据将插入数据库

需要通过server.js文件查看返回值

如何在浏览器中检查post call。。?
如何实现这一点?

为了从节点服务器调用外部服务器,我一直在使用这个模块

下面是如何使用
request

var socket  = require('socket.io');
var express = require('express');
var app     = express();
var server  = require('http').createServer(app);
var io      = socket.listen(server);
var port    = process.env.PORT || 3000;
var request = require('request');

server.listen(port, function() {
  console.log('Server listening at port %d', port);
});

io.on('connection', function(socket) {
  socket.on('send_data', function(data) {
    console.log("test line: " + data);

    request.post({
      url: 'http://ip:port/welcome/testFunction',
      data: data
    }, function optionalCallback(err, httpResponse, body) {
      if (err) {
        return console.error('upload failed:', err);
      }
      console.log('Server responded with:', body);
    });
  });
});
注意:这不是一个功能完整的示例,因为您可能需要调整
post
方法参数和头,如
application/x-www-form-urlencoded
多部分/表单数据


希望这有点帮助,以便从节点服务器调用我一直在使用的外部服务器模块

下面是如何使用
request

var socket  = require('socket.io');
var express = require('express');
var app     = express();
var server  = require('http').createServer(app);
var io      = socket.listen(server);
var port    = process.env.PORT || 3000;
var request = require('request');

server.listen(port, function() {
  console.log('Server listening at port %d', port);
});

io.on('connection', function(socket) {
  socket.on('send_data', function(data) {
    console.log("test line: " + data);

    request.post({
      url: 'http://ip:port/welcome/testFunction',
      data: data
    }, function optionalCallback(err, httpResponse, body) {
      if (err) {
        return console.error('upload failed:', err);
      }
      console.log('Server responded with:', body);
    });
  });
});
注意:这不是一个功能完整的示例,因为您可能需要调整
post
方法参数和头,如
application/x-www-form-urlencoded
多部分/表单数据


希望这对@Kukic Vladimir.可能的复制有所帮助。。给定链接可能与我的问题有关。但不能解决我的问题。未调用Codeigniter控制器,数据库中未插入任何数据。如何在浏览器中检查来自server.js的post调用。显示http post返回数据的命令提示符,如@Kukic Vladimir。。如果你理解我的问题,请给出你的代码我哪里出了问题。。可能重复@Kukic Vladimir。。给定链接可能与我的问题有关。但不能解决我的问题。未调用Codeigniter控制器,数据库中未插入任何数据。如何在浏览器中检查来自server.js的post调用。显示http post返回数据的命令提示符,如@Kukic Vladimir。。如果你理解我的问题,请给出你的代码我哪里出错了我试过你的代码。。它只在命令提示符下显示响应,数据库中没有任何更新。这是在命令提示符下显示响应的图像…@ArunValaven表示您已成功访问apache服务器,现在,您需要在apache服务器上检查这个问题,并将
post
参数和url与php代码中定义的参数和url对齐。。它只在命令提示符中显示响应,而不在数据库中显示任何更新。这是在命令提示符中显示响应的图像…@ArunValaven表示您已成功访问apache服务器,现在您需要在
apache
服务器上检查此问题,并将
post
参数和url与php代码中定义的参数和url对齐。