通过jQuery Ajax在Express.js和PHP之间进行通信


Comunication between Express.js and PHP through jQuery Ajax

我正在开发一个小项目,其中我有一个在Express中加载的网页(index.html.js它将一些数据发送到在MAMP服务器上运行的PHP脚本。PHP 脚本处理数据并将 JSON 编码的数组返回到网页,最后 Node.js 服务器使用 socket.io 将数据发送到连接的客户端。

我在使用 jQuery Ajax 与 PHP 通信时遇到问题。我使用 POST 将数据发送到 PHP,我知道 PHP 接收到这些数据,但我不知道如何捕获来自 PHP 的响应以了解处理过程如何。

我没有使用Node.js的经验。我能做些什么来使这个东西工作?

到目前为止,这是我拥有的代码

节点.js - 快递.js

    var express = require('express')
  , routes = require('./routes')
  , user = require('./routes/user')
  , db = require('./routes/db')
  , http = require('http')
  , socketio = require('socket.io')
  , path = require('path');
var app = express();

app.set('port', process.env.PORT || 3000);
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser()); //Middleware
app.use('/', express.static(__dirname + '/public'));
if ('development' == app.get('env')) {
  app.use(express.errorHandler());
}
app.get('/', routes.index);
app.get('/users', user.list);
var server = http.createServer(app);
server.listen(app.get('port'), function(){
  console.log('Express server listening on port ' + app.get('port'));
});

网页

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Site</title>
    <script src="js/jquery-2.0.3.min.js" type="text/javascript"></script>
</head>
<body>
    <div id="formContainer">
        <form enctype="multipart/form-data">
          <input type="text" name="texto">
          <button type="button" id="buttonSend">Enviar</button>
        </form><br/><br/>      
    </div>

<script type="text/javascript">
$('#buttonSend').click(function(e){ 
  e.preventDefault();
  $.ajax({
        url: 'http://localhost:8080/NodePHP/test.php',
        type: 'POST',
        dataType: "json",
        data: {value: 1},
        success: function(data){
            if(data.success == true){
                alert("Perfect!");
            }
            else{
                alert("Error!");   
            }
        },
        error: function(xhr,status,error){
            //alert("Error de llamada al servidor");
            alert(xhr.responseText);
            //$('#botonUsarFoto').css('display','block');
        }
    });         
});

</script>
</body>
</html>

PHP 脚本

<?php
$number = $_POST['value'];
echo $number;
// move the image into the specified directory //
if ($number == 1) {
    $data = array("success"=>"true");
    echo json_encode($data);
} else {
    $data = array("success"=>"false");
    echo json_encode($data);
}
?>

提前感谢您的任何帮助

为了使用 Node 发出请求,我们将使用 httpquerystring 模块。 以下是从 Nodejitsu 人员那里亲切地采用的一个例子:

var http = require('http');
var querystring = require('querystring');
var data = querystring.stringify({
  value: 1
});
var options = {
  host: 'localhost',
  path: '/myPHPScript',
  method: 'POST'
};
callback = function(response) {
  var str = '';
  response.on('data', function (chunk) {
    str += chunk;
  });
  response.on('end', function () {
    console.log(str);
  });
}
var req = http.request(options, callback);
req.write(data);
req.end();

或者,您可以使用请求模块,但首先要做的事。