如果您想了解从Node.jsPOST到PHP和nodejs用post传数据的知识,那么本篇文章将是您的不二之选。我们将深入剖析从Node.jsPOST到PHP的各个方面,并为您解答nodejs用pos
如果您想了解从Node.js POST到PHP和nodejs用post传数据的知识,那么本篇文章将是您的不二之选。我们将深入剖析从Node.js POST到PHP的各个方面,并为您解答nodejs用post传数据的疑在这篇文章中,我们将为您介绍从Node.js POST到PHP的相关知识,同时也会详细的解释nodejs用post传数据的运用方法,并给出实际的案例分析,希望能帮助到您!
本文目录一览:- 从Node.js POST到PHP(nodejs用post传数据)
- Angular HTTP post到PHP和未定义
- HTML表单POST到PHP页面
- javascript – 从Node.js到PHP的POST
- javascript – 如何从Node.js中的ajax post返回成功
从Node.js POST到PHP(nodejs用post传数据)
我正在尝试将一些数据从Node.js应用程序发布到PHP脚本。目前,我只是在构建概念证明,但无法将实际数据传递到PHP端。请求通过,我得到200,但PHP认为$
_POST数组为空。
这是我的节点代码:
// simple end point just for testingexports.testPost = function(request, response) { data = request.body.data; postToPHP(data); response.end(data);}function postToPHP (data) { var http = require(''http''); var options = { host : ''localhost'', port : 8050, path : ''/machines/test/index.php'', method : ''POST'', headers : { ''Content-Type'' : ''application/json'', ''Content-Length'' : Buffer.byteLength(data) } }; var buffer = ""; var reqPost = http.request(options, function(res) { console.log("statusCode: ", res.statusCode); res.on(''data'', function(d) { console.info(''POST Result:\n''); //process.stdout.write(d); buffer = buffer+data; console.info(''\n\nPOST completed''); }); res.on(''end'', function() { console.log(buffer); }); }); console.log("before write: "+data); reqPost.write(data); reqPost.end();}
同样,该请求将其发送到localhost:8050 / machines / test / index.php,但是当我执行$
_POST的var_dump时,它是一个空数组。
[29-Jan-2014 21:12:44] array(0) {}
我怀疑我在.write()方法上做错了什么,但我不太清楚该怎么办。对于我所缺少或做错的任何事情,我们将不胜感激。
* 更新:
正如一些评论指出的那样,使用file_get_contents(’php:// input’); 确实可以在PHP端获取数据,但是我仍然希望能够直接访问$
_POST数组。
答案1
小编典典由于您正在发送数据,因此Content-Type:application/json
您将需要读取原始输入,因为php不知道如何将json读入_GET和_POST之类的全局变量中,除非您有一些php扩展来做到这一点。
您可以使用querystring库将对象解析为名称-
值对查询字符串,Content-Type:application/x-www-form-urlencoded
然后与之进行传输,以便将数据解析为全局变量
var data = { var1:"something", var2:"something else"};var querystring = require("querystring");var qs = querystring.stringify(data);var qslength = qs.length;var options = { hostname: "example.com", port: 80, path: "some.php", method: ''POST'', headers:{ ''Content-Type'': ''application/x-www-form-urlencoded'', ''Content-Length'': qslength }};var buffer = "";var req = http.request(options, function(res) { res.on(''data'', function (chunk) { buffer+=chunk; }); res.on(''end'', function() { console.log(buffer); });});req.write(qs);req.end();
Angular HTTP post到PHP和未定义
该函数在javascript中调用得很好。
function LoginForm($scope,$http) { $http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8'; $scope.email = "fsdg@sdf.com"; $scope.password = "1234"; $scope.login = function() { data = { 'email' : $scope.email,'password' : $scope.password }; $http.post('resources/curl.PHP',data) .success(function(data,status,headers,config) { console.log(status + ' - ' + data); }) .error(function(data,config) { console.log('error'); }); } }
我从PHP文件得到200 OK回应,但是,返回的数据说,电子邮件和密码是未定义的。这是所有的PHP我有
<?PHP $email = $_POST['email']; $pass = $_POST['password']; echo $email; ?>
任何想法为什么我得到未定义的POST值?
编辑
我想指出,因为这似乎是一个流行的问题(但它是旧的),.success和.error已被弃用,你应该使用.then作为@james Gentes指出在commments
我的建议是只使用application / json的默认angularjs设置为标题,在PHP中读取原始输入,然后反序列化JSON。
这可以在PHP中实现这样:
$postdata = file_get_contents("PHP://input"); $request = json_decode($postdata); $email = $request->email; $pass = $request->password;
或者,如果您严重依赖于$ _POST功能,您可以形成一个查询字符串,如email=someemail@email.com\u0026amp; password = somepassword,并将其作为数据发送。确保此查询字符串是URL编码的。如果手动构建(相对于使用像jQuery.serialize()),Javascript的encodeURIComponent()应该为你做的伎俩。
HTML表单POST到PHP页面
好的…我创建了一个form.html页面.它要求用户输入6个文本字段.表单POST到一个名为myform.PHP的单独页面. myform.PHP页面只是返回用户输入的值.但是,当我单击提交时,我只是在屏幕上弹出myform.PHP源代码.
<div>
<form action="myform.PHP" method="post">
Name: <input name="name" type="text" size="25" />
Course: <input name="course" type="text" size="25" />
Book: <input name="book" type="text" size="255" />
Price: <input name="price" type="text" size="7" />
Email: <input name="email" type="text" size="255" />
Phone #: <input name="phone" type="text" size="12" />
<input name="mySubmit" type="submit" value="submit" />
</form>
</div>
<?PHP
$name = $_POST["name"];
$course = $_POST["course"];
$book = $_POST["book"];
$price = $_POST["price"];
$email = $_POST["email"];
$phone = $_POST["phone"];
?>
</head>
<body>
<?PHP
echo $name;
?>
</body>
解决方法:
marc Towler是对的.您需要首先使用PHP的扩展名来解析PHP代码的页面.但我实际上建议您将表单页面和表单处理分开.我建议如下:
myform.PHP:
<!DOCTYPE html>
<html>
<head></head>
<body>
<div>
<form action="formprocessor.PHP" method="POST">
<label>Name: </label>
<input name="name" type="text" size="25" />
<label>Course: </label>
<input name="course" type="text" size="25" />
<label>Book: </label>
<input name="book" type="text" size="255" />
<label>Price: </label>
<input name="price" type="text" size="7" />
<label>Email: </label>
<input name="email" type="text" size="255" />
<label>Phone #: </label>
<input name="phone" type="text" size="12" />
<input name="mySubmit" type="submit" value="Submit!" />
</form>
</div>
</body>
</html>
formprocessor.PHP:
<?PHP
$name = $_POST["name"];
$course = $_POST["course"];
$book = $_POST["book"];
$price = $_POST["price"];
$email = $_POST["email"];
$phone = $_POST["phone"];
echo $name;
?>
javascript – 从Node.js到PHP的POST
这是我的节点代码:
// simple end point just for testing exports.testPost = function(request,response) { data = request.body.data; postToPHP(data); response.end(data); } function postToPHP (data) { var http = require('http'); var options = { host : 'localhost',port : 8050,path : '/machines/test/index.PHP',method : 'POST',headers : { 'Content-Type' : 'application/json','Content-Length' : Buffer.byteLength(data) } }; var buffer = ""; var reqPost = http.request(options,function(res) { console.log("statusCode: ",res.statusCode); res.on('data',function(d) { console.info('POST Result:\n'); //process.stdout.write(d); buffer = buffer+data; console.info('\n\nPOST completed'); }); res.on('end',function() { console.log(buffer); }); }); console.log("before write: "+data); reqPost.write(data); reqPost.end(); }
再次,请求使它到localhost:8050 / machines / test / index.PHP,但是当我做一个$_POST的var_dump它是一个空数组.
[29-Jan-2014 21:12:44] array(0) { }
我怀疑我做错了.write()方法,但我不能弄清楚什么.任何关于我失踪或做错误的输入将不胜感激.
*更新:
由于某些注释表示使用file_get_contents(‘PHP:// input’);确实可以在PHP方面获取数据,但我仍然希望直接访问$_POST数组.
解决方法
您可以使用querystring库将对象解析为不能使用Content-Type:application / x-www-form-urlencoded传输的名称 – 值对查询字符串,以便将数据解析为全局变量
var data = { var1:"something",var2:"something else" }; var querystring = require("querystring"); var qs = querystring.stringify(data); var qslength = qs.length; var options = { hostname: "example.com",port: 80,path: "some.PHP",method: 'POST',headers:{ 'Content-Type': 'application/x-www-form-urlencoded','Content-Length': qslength } }; var buffer = ""; var req = http.request(options,function(res) { res.on('data',function (chunk) { buffer+=chunk; }); res.on('end',function() { console.log(buffer); }); }); req.write(qs); req.end();
javascript – 如何从Node.js中的ajax post返回成功
exports.saveAction = function (req,res) { var conn = MysqL.createConnection({ host : nconf.get("database:host"),//port: 3306,user : nconf.get("database:username"),password : nconf.get("database:password"),database : nconf.get("database:database"),multipleStatements: true,//ssl: 'Amazon RDS' }); var action = req.body; conn.query('UPDATE actions SET ? WHERE Id = ?',[action,action.Id],function (err,result) { conn.end(); if (err) throw err; res.writeHead(200,{ "Content-Type": "application/json" }); res.end("Updated Successfully"); }); };
我返回“200”,但它总是返回错误子句如下所示:
$.ajax({ url: "/api/action/SaveAction",type: "PUT",data: ko.toJSON(self.stripDownObj()),datatype: "json",contentType: "application/json; charset=utf-8",success: function (result) { console.log(result); if(result.status == 200){ self.isEditMode(!self.isEditMode()); } },error: function(result){ console.log(result); } });
注意:SQL查询是成功的,并且保存数据.
解决方法
res.end('{"success" : "Updated Successfully","status" : 200}');
接着
$.ajax({ .... datatype: "json",// expecting JSON to be returned success: function (result) { console.log(result); if(result.status == 200){ self.isEditMode(!self.isEditMode()); } },error: function(result){ console.log(result); } });
在Node中,您可以随时使用JSON.stringify获取有效的JSON
var response = { status : 200,success : 'Updated Successfully' } res.end(JSON.stringify(response));
Express也支持做
res.json({success : "Updated Successfully",status : 200});
它会将对象转换为JSON,并自动传递适当的标题.
关于从Node.js POST到PHP和nodejs用post传数据的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于Angular HTTP post到PHP和未定义、HTML表单POST到PHP页面、javascript – 从Node.js到PHP的POST、javascript – 如何从Node.js中的ajax post返回成功的相关信息,请在本站寻找。
本文标签: