【问题标题】:Making ajax call to node server对节点服务器进行ajax调用
【发布时间】:2018-01-18 15:40:35
【问题描述】:

我是 NodeJS 的新手,并尝试使用 npm spotcrime 包通过 ajax 调用单击按钮从用户输入位置获取犯罪数据。这是包的npm文档页面上给出的包的用法。

var spotcrime = require('spotcrime');

// somewhere near phoenix, az 
var loc = {
lat: 33.39657,
lon: -112.03422
};

 var radius = 0.01; // this is miles 
spotcrime.getCrimes(loc, radius, function(err, crimes){

});

单独运行并返回正确的犯罪 json 数据时效果很好。但是我不明白如何通过单击按钮的 ajax 调用来调用它。任何见解都会非常有帮助。在此先感谢:)

更新

这是我的服务器代码

var express = require('express');
var app = express();
var dataFile = require('./data/data.json');
var reload = require('reload');
var path = require('path');

app.set('port', process.env.PORT || 3000);
app.set('appData', dataFile);   
app.set('view engine', 'ejs');

app.set('views', __dirname + '/views');
app.use(express.static(path.join(__dirname, '/public')));
app.use(require('./routes/index'));
app.use(require('./routes/information'));
app.use(require('./routes/spotcrime'));


var server = app.listen(app.get('port'), function(){
console.log('Go to http://localhost:' + app.get('port')+ ' on your 
browser');

});

reload(app);

这里是 spotcrime.js 文件

var express = require('express');
var router = express.Router();
var spotcrime = require('spotcrime');


router.get('/spotcrime', function(request, response){
var loc = {
lat: 33.39657,
lon: -112.03422
};

var radius = 0.01; // this is miles 

spotcrime.getCrimes(loc, radius, function(err, crimes){
response.send(crimes);
});


}); 

module.exports = router;

我尝试了很长一段时间,但没有任何结果。请提出任何出路

【问题讨论】:

标签: javascript jquery node.js ajax express


【解决方案1】:

使用此代码进行 ajax 调用

 var http = require('http');
    var request = require('request');
    request.post({
            url: "xxxxxxxxxxxx",
            method: "POST",
            json: true, // <--Very important!!!
            body: {}
        },
        function(error, response, body) {
            if (!error) {
                console.log(body.d);
            } else {
                console.log(error);
            }
        }
    );

【讨论】:

    【解决方案2】:

    如果我理解正确,您想从浏览器(前端)向您的服务器发送 AJAX 请求。这可以通过 jQuery AJAX 轻松完成,请参阅official documentation page。下面是一个例子:

    <buttom class="send-request">Send AJAX request</button>
    
    $(".send-request").click(function() {
        $.ajax({
          method: "GET", // since you are waiting for GET request on server
          url: "/spotcrime", // you might have to provide full path to your endpoint starting with https://127.0.0.1/spotcrime
          data: { Greetings: "Hello" } // data object can be deleted since you don't expect any parameters on server side
        })
        .done(function( msg ) {
          alert( "Response data: " + msg );
        });
    });
    

    【讨论】:

    • 这真的很有帮助。非常感谢。您能否告诉我如何通过此调用向服务器发送数据,因为我需要将位置坐标发送到服务器代码
    • 您在 AJAX 函数内的数据对象中指定需要发送到服务器的数据。如果我的回答对您有帮助,如果您将其标记为已接受,我将不胜感激:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-15
    • 1970-01-01
    • 1970-01-01
    • 2013-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多