gpt4 book ai didi

javascript - Codeigniter 中从 Node 服务器到 Controller 的 Ajax post 调用,数据未插入数据库

转载 作者:太空宇宙 更新时间:2023-11-04 02:03:50 25 4
gpt4 key购买 nike

可能的重复:

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

环境

  • 操作系统:Windows 7 - 64 位
  • 框架:CodeIgniter PHP MVC
  • 客户端:Javascript - Jquery
  • 服务器端:NodeJS
  • 数据库:MySQL

我需要从服务器(Node + express)(server.js)向Codeigniter Controller 文件进行http post调用

我正在使用Jquery AjaxNode server.js文件中进行post调用。但调用后在客户端不起作用。

代码示例:

Controller - 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);
}
}

模型 - Welcome_model.php

<?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';
}
}
}

View -> welcome_view.php

<!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>

Node 文件 -> server.js

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 $;
require("jsdom/lib/old-api").env("", function(err, window) {
if(err){
console.error(err);
return;
}
$ = require("jquery")(window);
});

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);
$.ajax({
type: "POST",
url: "http://ip:port/welcome/testFunction",
data: "sendData="+data,
dataType: "text",
cache : false,
success: function(getData){
var parseData = $.parseJSON(getData);
console.log("parseData: "+parseData);
}
});
});
});

Node 服务器在我的项目中启动。服务器监听端口。 单击 View 中的按钮,套接字将在 View 中发出,套接字将接收 server.js 文件中的数据。

我需要在 server.js 中完成 ajax post 调用,它将调用 Controller -> 模型-> 数据将插入数据库

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

如何在浏览器中检查调用后..?如何实现这一点?

最佳答案

为了从 Node 服务器到外部服务器进行调用,我一直在使用 request模块。

以下是如何使用 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 方法参数和 header ,例如 application/x-www-form-urlencodedmultipart/form-data,...

希望对大家有一点帮助

关于javascript - Codeigniter 中从 Node 服务器到 Controller 的 Ajax post 调用,数据未插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45013135/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com