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
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对齐。