我有一个应用程序,我想根据多个条件从节点服务器获取数据(调用循环内的节点服务器)。
我有以下代码逻辑:
home-node.php ,其中有一个具有 search-node.php 操作的表单。
在 search-node.php 中,我收集所有参数并使用参数构建 $ ajaxurl getnodedata.php 并调用此文件通过ajax。
搜索-node.php
$.ajax({
url: "<?php echo $ajaxurl;?>",
type: "POST",
success : function(html){
$("#response").html(html);
});
在 getnodedata.php 中,我编写了代码以从节点服务器获取数据。
getnodedata.php
getDataFromNode($conditions,"http://example.com:8080/fetchdata");
/* Function to fecth data using node*/
function getDataFromNode($conditions,$url)
{
$data="<table class='display' id='table'>";
$data.="<thead>";
$data.="<tr>";
$data.="<th>";
$data.="</th>";
$data.="<th style='text-align:center;'>";
$data.="Name";
$data.="</th>";
$data.="<th style='text-align:center;'>";
$data.="Data";
$data.="</th>";
$data.="</tr>";
$data.="</thead>";
$data.="<tbody>";
for($i=0;$i<count($conditions);$i++)
{
$returndata = curl_post(json_encode($conditions[$i]),$url);
foreach ($returndata as $value)
{
$data.="<tr>";
$data.="<td>";
$data.="</td>";
$data.="<td>";
$data.=$value['name'];
$data.="</td>";
$data.="<td>";
$data.=$value['data'];
$data.="</td>";
$data.="</tr>";
}
}
$tabledata.="</tbody>";
$data.="</table>";
echo $data;
}
/* function to send curl request to node */
function curl_post($data_string,$url)
{
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string))
);
$result = curl_exec($ch);
$data = json_decode($result,TRUE);
curl_close($ch);
return $data;
}
在服务器上我定义了路线:
app.post('/fecthdata', db.findData);
函数findData定义如下:
exports.findData = function(req, res) {
var condition = req.body;
console.log('condition: ' + JSON.stringify(condition));
db.collection('collection1', function(err, collection) {
collection.find(condition).toArray(function(err, item) {
res.send(item);
});
});
};
我有以下问题:
1)我调用节点服务器的方法是否正确?
有问题的代码是:
for($i=0;$i<count($conditions);$i++)
{
$returndata = curl_post(json_encode($conditions[$i]),$url);
}
2)有没有办法显示响应,因为它到达客户端浏览器,在响应div中显示第一个响应并继续追加到最终响应?
现在我立即返回所有数据。