AJAX到PHP不使用NODEJS将数据发送到数据库

时间:2014-08-03 13:01:41

标签: javascript php jquery ajax node.js

我目前正在开发一个聊天项目..我正在使用一个php框架,并设法在节点上运行它现在我遇到的问题是ajax查询不起作用它不发送单个数据到我的数据库..我使用的脚本完全正常工作,因为当我仍在使用ajax的长轮询聊天应用程序时我使用了这个脚本...当我在新聊天中使用它时,它现在没有工作使用我正在开发的节点的app ...这是我的index.php

<?php startblock('script') ?>
    <script src="/socket.io/socket.io.js"></script>
    <script src="http://code.jquery.com/jquery-1.11.1.js"></script>
    <script>
        var socket = io();
        $('form').submit(function(){
            socket.emit('chat message', $('#m').val());
            $('#m').val('');
            return false;
        });
        socket.on('chat message', function(msg){
            var data2 = { text: msg };

            $.ajax({
                url: 'localhost:3000/includes/message/store_chat.php',
                dataType: 'json',
                type: 'POST',
                data: {json:JSON.stringify(data2)},
                success: function (data2) {  }
            });
        });
    </script>

    <script>
        jQuery(function ($) {
            $(window).on("resize", function () {
                body      = $("html,body"),
                menu      = $("#side-menu").width(),
                gridW     = body.width() - (menu + 30),
                gridH     = body.height();

                $("#message-app-wrapper").css("height", gridH);
                $("#views-wrapper").css("width", gridW);
            }).resize();
        });
    </script>
<?php endblock(); ?>

这是数据库处理程序

<?php

//Send some headers to keep the user's browser from caching the response.
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT" ); 
header("Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . "GMT" ); 
header("Cache-Control: no-cache, must-revalidate" ); 
header("Pragma: no-cache" );
header("Content-Type: text/plain; charset=utf-8");

$json2 = $_POST['json'];
$data = json_decode($json2);

$text = $data->text;

$con = new PDO("mysql:host=localhost:3000;dbname=schat", "root" , "");
$con->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

$sql2 = "INSERT INTO chat_storage(chat) VALUES(:msg)";
$stmt2 = $con->prepare($sql2);
$stmt2->bindValue( 'msg',$text, PDO::PARAM_STR);
$stmt2->execute();
?>

index.js在这里:

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var validator;

function getStdout(command, args, fn) {
    var childProcess = require('child_process').spawn(command, args);
    var output = '';
    childProcess.stdout.setEncoding('utf8');
    childProcess.stdout.on('data', function(data) {
        output += data;
    });
    childProcess.on('close', function() {
        fn(output);
    });
}

app.use('/assets', require('express').static(__dirname + '/assets'));
app.use('/temp', require('express').static(__dirname + '/temp'));
app.use('/includes/message', require('express').static(__dirname + '/includes/message'));
app.get('/', function(req, res) {
    //res.sendfile(__dirname + '/' +validator);
    res.send(validator);
});

//you should have only one io.on('connection')
io.on('connection', function(socket) {
    socket.on('chat message', function(msg){
        console.log('message: ' + msg);
        io.emit('chat message', msg);
    });
});

getStdout('php', ['index.php'], function(output) {
    validator = output;
    //start your server after you get an output
    http.listen(3000, function() {
        console.log(validator);
    });
});

这些是我到目前为止所拥有的。由于某种原因,它不会存储到我的数据库,我不知道我在这里做错了什么或者错过了添加的东西。

1 个答案:

答案 0 :(得分:2)

尝试直接与node.js中的mysql对话。也可以创建一个新的用户名,而不是以root身份登录到mysql。这是一个代码段,带有一些注释: -

var mysql =  require('mysql'); // run: npm install mysql
var http = require('http');
var express = require('express');
var app = express();

var connection =  mysql.createConnection({ // setup the connection
        host : "localhost",
        user : "username",
        password: "password",
})

connection.connect(function(err) { // connect and handle errors
  if(err) {  
   // handle your errors here 
  }
}); // end .connect()

app.get('/path/:msg', function(req,res){ // process incoming message
  res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' })

  var myMsg= req.params.msg; // obtain the incoming msg
  var strQuery = "INSERT INTO chat_storage(chat) VALUES(?)"; // your SQL string

  connection.query("use schat"); // select the db
  connection.query( strQuery, myMsg, function(err, rows){
     if(err) {
        // handle errors
     } else {
        // message received
     }
   }); end .query()
}); // end app.get()